js_object

来源:互联网 发布:大陆网络女歌手排行榜 编辑:程序博客网 时间:2024/06/11 01:04

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