对象
对象属于一种复合的数据类型,在对象中可以保存多个不同的数据类型的属性。
- 内建对象:由ES标准中定义的对象,如String.Function.Object等等
- 宿主对象:由JS的运行环境提供的对象,如BOM、DOM等等
- 自定义对象:开发人员创建的
对象的操作
使用new关键字调用的函数,是构造函数constructor,构造函数是专门用来创建对象的函数。
var han = new Object();
在对象中保存的值,称为属性,向对象添加属性:
对象.属性名 = 属性值;
han.name = "韩";
han.gender = "男";
读取对象属性:
对象.属性名;
console.log(han.name);
如果读取对象中没有的属性,不会报错,而是会返回undefined。
修改属性的语法和增加相同。
删除属性的语法:
delete 属性名.属性值;
如果要使用特殊的属性名,则不能采用.的方式来添加,语法是:
对象["属性名"]= 属性值;
取值的时候同样采用这种格式。
使用[]这种形式去操作属性更加灵活,可以再[]中直接传递一个变量,这样变量的值是多少就会读取那个属性。
属性值可以是任意类型的值,甚至可以是一个对象。
in运算符
通过in运算符,可以检查一个对象中是否含有指定的属性,如果有则返回true,没有则返回false
语法:"属性名" in 对象
console.log("name" in han)
基本数据类型:String Number Boolean Null Undefined
引用数据类型:Object
JS中变量都是保存在栈内存中的,基本数据类型的值直接在栈内存中存储,值与值之间是相互独立的。
对象是保存在堆内存中的,而对象这个变量的值保存的是对象的内存地址,即对象的引用。如果两个对象变量保存同一个对象的引用,那么通过一个变量修改对象的属性,会影响另外一个。如果将其中一个对象设置为Null,相当于将这个对象的引用断开(obj2 = null;),不会影响另外一个对象的引用。
如果有两个对象,其所拥有的属性和属性值全都相同,但是因为内存地址不同,因此二者属于两个不同的对象。
当我们比较两个基本数据类型的值时,就是比较值;而当我们比较两个对象时,我们比较的是内存地址。
除了通过构造函数,我们通常还可以用对象字面量来创建一个对象,语法:
var han = {};
使用对象字面量,可以在创建对象时,直接使用键值对的方式指定对象中的属性:
var han = {
name:"han",
age:28,
han2:{gender:true}
};
注意,最后一个属性键值对后面不要加逗号了。
属性名可以加引号也可以不加,一般不加,如果使用特殊的属性名则需要加引号。

被折叠的 条评论
为什么被折叠?



