JavaScript-对象属性

可以说 "JavaScript 对象是变量的容器",但是,我们通常认为 "JavaScript 对象是键值对的容器"。

键值对通常写法为 name : value (键与值以冒号分割),键值对在 JavaScript 对象通常称为 对象属性。、

 1 var obj={a:1,b:2};
 2 // a是obj的key
 3 // 1是obj的key属性a的value
 4 
 5 // 直接定义对象obj的属性a的值是10
 6 obj.a=10;
 7 console.log(obj.a);
 8 
 9 // 现在给obj对象创建一个新属性c,并且设置这个新属性的值是20
10 obj.c=20;
11 console.log(obj.c);
对象属性有两种写法,一种是点语法,另一种是[]的写法。
1 obj.a   //点语法的属性是不加双引号
2 obj["a"] // key的写法,必须有双引号
       //为什么key的写法必须有双引号,在key这种写法时,要求属性名必须时字符型(或者symbol)。
1 var a="ab";
2 obj[a]=30;
3 // 这里的a是变量,可以理解为将"ab"的字符串作为了obj的属性名
1 var obj={a:1,b:2,o:3};
2 var o="a";
3 console.log(obj[o]) ;//1
4 console.log(obj.o);//如果对象上没有该属性时,结果是undefined
5 
6 var o="a";
7 console.log(obj[o]);//这里的o没有加双引号,因此是变量    1
8 console.log(obj["o"]);//3  这里获取了obj的o属性
9 console.log(obj.o);//使用点语法时不能使用变量,所以不需要加双引号,默认为是o属性 3
当使用对象[变量]  如果变量值不是字符型,会隐式转换为字符型,并且将这个字符串作为该对象的属性名。
 1 var n=9;
 2  obj[n]=100;//如果变量的值不是字符,会隐式转换为字符,会将n的值转换为字符9设置为属性
 3 
 4 var m=true;
 5 obj[m]=10;//这里会将变量值不是字符串的隐式全部转为字符串
 6 console.log(obj.true);
 7 
 8 
 9 var n;
10 var m;
11 obj[n]=10;//n的值是undefined,会自动隐式转换为字符串undefined
12 // 变量的值作为对象的属性名
13 console.log(obj[m]);
14 console.log(obj["undefined"]);
15 obj["undefined"]
16 console.log(n);
任何对象强转为字符串后,都会变为"[object Object]"。
 1 var o={a:1};
 2 var o1={b:2};
 3 var o2={};
 4 
 5 o2[o]=10;
 6 o2[o1]=20;
 7 console.log(o2[o]);
 8 
 9 o2[o]=10;
10 console.log(String(o));//"[object Object]"

 

猜你喜欢

转载自www.cnblogs.com/wyp-King/p/12673225.html
今日推荐