1.null,true,false,undefined,数字,字符串都不是对象,其它的值都是对象,且对象是可变的;
2.对象最常见的用法是create,set,query,test(检测),enumerate(枚举)
3.
(1)对象直接量
var empty{}; //没有任何属性的对象;
var point = {x:0,y:0}; //两个属性;
var book = {
"marin title":"javascript", //属性名字里有空格,必须使用字符串
"sub-title":"The Definitive Guide", //属性名字里有连子符,必须使用字符串;
"for": "all audiencces", //"for"是保留字,必须使用字符串;
author:{ //注意,这里属性值是一个对象,这里的属性值名都没有引号。
firstname:"davied",
surname:"Flangan"
(2)通过new直接创建对象:
var obj = new Object(); //创建一个空对象,和{}一样。
(3)原型
每个JavaScript对象(null除外),都和另一个对象想关联。“另一个”对象就是我们熟知的原型,每一个对象都从原型上继承属性。
var obj = Object.create(Object.prototype);
//通过原型继承创建一个新对象
//inherit()返回一个继承自原型对象p的属性的新对象;
function inherit(p){
if(p==null) throw TypeError();
if(Object.create){
return Object.create(p);
}
var t= typeof p;
if(t !=="Object" && t!=="function") throw TypeError();
function f() {};
f.prototype = p;
return new f(); //使用f()创建继承p的继承属性
}
4.通时创建或者修改多个属性。
var p = Object .defineProperties({},{
x:{value:1,writable:true,emumerable:true,configurable:true},
y:{value:1,writable:true,enumerable:true,configurable:true},
r:{
get:function(){return Math.sqrt(this.x*this.x+this.y*this.y),emumerable:true,configurable:true}
}
});
5.检测一个对象是否是另一个对象的原型。
var p = {x:1}; //定义一个原型对象
var o = Object.create(p); //使用这个原型创建一个对象
p.isPrototypeOf(o); //=>>true :o继承自p
Object.prototype.isPrototypeOf(o); //==>>true:p继承Object.prototype