对象概述
对象中包含一系列属性,这是属性是无序的。
每个属性都有一个字符串key和对应的value。
var obj = {x:1,y:2};
obj.x; //1
obj.y; //2
//能够动态的增加和删除属性
对象的key为string类型,如果访问时不为string,则会调用tostring先转成string
var obj = {};
obj[1] = 1;
document.write(obj['1']);
obj[{}] = true;
document.write(obj[{x:1}]);
对象的构造
对象的创建
1、字面量
var obj1 = {x:1,y:2};
var obj2 = {
x:1,
y:2,
o:{ //属性为对象,继续嵌套
z:3,
n:3
}
};
2、new/原型链
function foo(){};
foo.prototype.z = 3;
//使用new构造器时,obj的原型会指向foo的原型prototype对象
var obj = new foo();
obj.y = 2;
obj.x = 1;
typeof obj.toString; //'function'
toString方法是因为其原型链末端的Object对象有toString方法
'z' in obj; //true //从prototype继承而来
obj.hasOwnProperty('z'); //false //z不是obj上的属性,而是其原型链上的属性
原型链
当访问一个对象的属性时:
1、若该对象有该属性,则返回该属性
2、若该对象没有该属性,则沿着原型链向上查找:
2.1 若在该原型链上查找到该属性,则返回对应的属性值
2.2 若沿原型链查找到null时仍未找到,则返回undefine