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

  • 相关阅读:
    ssh登录
    wireless tools的使用
    Ubuntu中的minicom
    ubuntu 下交叉编译环境的搭建
    两个队列实现一个栈
    二叉树节点的插入
    二叉树的非递归遍历
    acwing 66. 两个链表的第一个公共结点
    acwing 60. 礼物的最大价值
    acwing 55. 连续子数组的最大和
  • 原文地址:https://www.cnblogs.com/dsitn/p/7051158.html
Copyright © 2011-2022 走看看