2.属性名和属性值
向对象中添加属性
属性名:
- 对象的属性名不强制要求遵守标识符规范
什么乱七八糟的名字都可以使用 - 但是我们使用是还是尽量按照标识符的规范去做
obj.name = "大圣";
2.1使用特殊的属性名
如果使用特殊的属性名,不能采用.的方式来操作
需要使用另一种方式:
语法:对象[“属性名”] = 属性值
读取时也需要采用这种方式
使用[]这种形式去操作属性,更加灵活,
在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性
obj["123"] = 789;
obj["nihao"] = "你好";
// console.log(obj["123"]);
var n = "nihao";
2.2属性值
JS对象的属性值,可以是任意的数据类型
甚至也可以是一个对象
obj.test = true;
console.log(obj.test);
// 创建一个对象
var obj2 = new Object();
obj2.name = "八戒";
// 将obj2设置为obj的属性
obj.test = obj2;
console.log(obj.test);
2.3in运算符
- 通过该运算可以检查一个对象中是否含有指定的属性
如果有则返回true,没有则返回false - 语法:
“属性名” in 对象
// 检查obj中是否含有test属性
console.log("test" in obj);
3.基本数据类型和引用数据类型
JS中的变量都是保存到栈内存中的,
- 基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响到其他变量。
- 对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一通过一个变量修改属性时,另一个也会受到影响。
- 当比较俩个基本数据类型的值时,就是比较值,而比较两个引用类型时,它就是比较对象的内存地址
- 如果两个对象一模一样的,但是地址不同,它也会返回false
4.对象字面量
使用对象字面量来创建一个对象:
使用对象字面量,可以在创建对象,直接指定对象中的属性
- 语法,{属性名:属性值,属性名:属性值…}
对象字面量的属性名可以加引号也可以不加,建议不加,
如果使用一些特殊的名字。则必须加引号。 - 属性名和属性值是一组一组名值对结构:
名和值之间使用:连接,多个名值对之间使用逗号隔开,如果一个属性之后没有其他的属性了,就不要写逗号。var obj2 = { name:"猪八戒", age:18, gender:"男", test:{name:"沙和尚"} };