zoukankan      html  css  js  c++  java
  • javascript对象创建方式

     

    一个js对象中有 [[proto]] [[class]]  [[extensible]] 三个对象标签 ,在对象的属性上有 writable ,enumerable,configurable,value,get/set 五个属性标签

     

     [[proto]] 对象的原型
     [[class]]  对象所属的类型
    [[extensible]] 是否可以增加新的属性
    writable  对象的属性是否可写
    enumerable 对象的属性是否可以枚举
    configurable 对象的属性是否可删除
    value 属性的值
    get/set get set方法


     

     对象的创建


    字面量创建对象

    var obj = {};
    
    obj.x = 1;
    
    obj.y = 2; 


    构造函数new创建对象

    function foo(){
    }
    
    foo.prototype.z = 3;
    
    var obj = new foo();
    
    obj.x = 4;
    
    console.info(obj.z); //out:3   obj对象的[[proto]] 会指向构造函数的prototype对象,在foo.prototype对象上存在z属性,所有能访问到z属性的值
    console.info(obj.x); //out:4
    
    'z' in obj  //true
    
    obj.hasOwnProperty('z');  //false

     in 操作符,可以遍历对象的属性,但它不保证顺序,同时会遍历对象原型链上的属性。如果只需要遍历对象本身的属性,使用hasOwnProperty();

    function fun(){}
    fun.prototype.z = 3;
    
    var obj = new fun();
    obj.x = 5;
    obj.u = 9;
    
    for(i in obj){
       console.info(i);  //x u z
    }  
    
    for(i in obj){
       if(obj.hasOwnProperty(i)){
           console.info(i);     //x u
         }
    }

     Object.create()创建对象

    var obj = Object.create({x : 1});
    obj.x // 1
    obj.hasOwnProperty('x');// false  说明 obj的原型 执行了{x:1}


    var obj = Object.create(null);
    obj.toString // undefined   如果为null 它的原型会指向null

  • 相关阅读:
    HP SAN Switch參考文檔地址
    hp,Qlogic,Brocade光纖卡查看方式
    使用nbrbutil工具來處理requested media id is in use, cannot process request
    NBU expired Media,Media ID not found in EMM database
    訪問索引的方法
    Linux光纖卡配置,磁盤掛載,多路徑設置
    Linux 6.5網卡配置
    Oracle ASM
    NBU bplabel命令擦除磁帶數據
    鼠标悬浮显示完整信息
  • 原文地址:https://www.cnblogs.com/dsitn/p/7051158.html
Copyright © 2011-2022 走看看