对象Object(笔记)

对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

var obj = {
  foo: 'Hello',
  bar: 'World'
};
键名 又称为“属性”(property)

所有键名都是字符串,加不加引号都可以,如果键名是数值,会被自动转为字符串。
★如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。

键值 又称为“方法”

如果属性的值还是一个对象,就形成了链式引用

var o1 = {};
var o2 = { bar: 'hello' };

o1.foo = o2;
o1.foo.bar // "hello"

对象o1的属性foo指向对象o2,就可以链式引用o2的属性。

对象的引用

★如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。

表达式还是语句?

JavaScript 程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。

var a = 1 + 3;

语句主要为了进行某种操作,一般情况下不需要返回值;
1 + 3叫做表达式,指一个为了得到返回值的计算式。
表达式为了得到返回值,一定会返回一个值。凡是 JavaScript 语言中预期为值的地方,都可以用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。
无法确定是对象还是代码块,一律解释为代码块。

属性的操作

有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。
注意,如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。
注意,数值键名不能使用点运算符(因为会被当成小数点),只能使用方括号运算符。
★ 增删改查

查:Object.keys
var obj = {
 key1: 1,
 key2: 2
};

Object.keys(obj);
// ['key1', 'key2']
删:delete
属性是否存在:in 运算符

包含就返回true,否则返回false。
一个问题是,它不能识别哪些属性是对象自身的,哪些属性是继承的。这时,可以使用对象的hasOwnProperty方法判断一下。

属性的遍历:for...in 循环

for...in循环有两个使用注意点
它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
它不仅遍历对象自身的属性,还遍历继承的属性。
对象都继承了toString属性,但是for...in循环不会遍历到这个属性。

你可能感兴趣的:(对象Object(笔记))