4.1 基础类型和引用类型
基础类型有:number (整数) string(字符串)null(对象)booleam(布尔值)Undefined (Undefined)----javascript特有的类型!
引用类型:保存在内存的对象!
4.2 动态属性
<span style="font-size:14px;color:#3333ff;">
var obj=new Object(); //新建了一个对象保存在变量obj
obj.name="xxxxx"; //然后给obj加了个属性name等于xxxxxx
alert(obj.name); //弹出obj.name
//可以为对象添加属性</span>
<span style="font-size:14px;color:#3333ff;">var num= "xxxx";<span style="white-space:pre"> </span>//将一个字符串保存在变量num
num.name=27;<span style="white-space:pre"> </span>//添加属性
alert(num.name);<span style="white-space:pre"> </span>//弹出报错!</span>
<span style="font-size:14px;color:#3333ff;">//不能为基本类型添加属性</span>
4.3 保存变量
除了保存方式不一样!从一个变量与另一个变量复制,基本类型和引用类型也有不同!
↓基本类型
<span style="font-size:14px;color:#3333ff;">var num1=20;
var num2=num1;
num2=30;
alert(num1); //20<span style="white-space:pre"> </span>两个是独立的值! </span>
↓引用类型
<span style="font-size:14px;color:#3333ff;">var obj1=new Object();
var obj2=obj1;
obj1.name="xxxx";
alert(obj2.name); //弹出xxxx<span style="white-space:pre"> </span> /引用类型,使用同一个对象!</span>
4.4 传递参数
js虽然有两种类型,但是函数传参。却是按值传递的!
↓基本类型传参
count作为参数传进setNum函数运算,这个时候count的值20被复制给局部变量num。运算结果不改变count的值。
<span style="font-size:14px;color:#3333ff;">function setNum(num){
num+=10;
return num;
}
var count=20;
alert(setNum(count)); //弹出30
alert(count) //弹出20</span>
↓引用类型传参
per作为对象传值进setName函数,给obj添加一个属性。per也会拥有这个属性。因为obj和per指向的都是同一个对象!
<span style="font-size:14px;color:#3333ff;">function setName(obj){
obj.name="xxxx";
}
var per=new Object();
setName(per);
alert(per.name); //弹出xxxx</span>
↓如果在函数局部重新定义一个对象。不会影响全局对象!
<span style="font-size:14px;color:#3333ff;">function setName(obj){
obj.name="xxxx";
bj=new Object(); //重新定义obj对象
obj.name="Boy"; //obj添加属性
}
var per=new Object();
setName(per);
alert(per.name); //依然弹出xxxx</span>
4.5检测类型
如果我们想检测一个变量是基本类型还是引用类型。那么需要用到 instanceof。↓
结果 = 变量 instanceof 类型;↓
<span style="font-size:14px;color:#3333ff;">alert(per instanceof Array);<span style="white-space:pre"> </span>//per是一个数组吗
alert(per instanceof Object);<span style="white-space:pre"> </span>//per是一个对象吗
alert(per instanceof RegExp);<span style="white-space:pre"> </span>//per是一个RegExp吗</span>