zoukankan      html  css  js  c++  java
  • javascript,创建对象的3种方法

    创建对象,可以通过字面量、关键字new,Object.create()函数创建。  

    1.字面量。

    var o1={
        name:"kxh",
        deal:function(){
          return this.name; 
      }
    }

    2.关键字new。

    var o4=new Object();
    o4.name="kxh1";
    o4.deal=function(){
        return this.name;
    }

    3.Object.Create()函数。

    函数定义:

    Object.create(proto [, propertiesObject ])

    参数:

    proto:一个对象,作为新创建对象的原型。

    propertiesObject:一个对象值,可以包含若干个属性,属性名为新建对象的属性名,属性值为那个属性的属性描述符对象.

    var o;
     
    //创建一个原型为null的空对象
    o = Object.create(null);
     
    //以字面量方式(o = {};)创建的空对象就相当于:
    o = Object.create(Object.prototype);
     
     
    o = Object.create(Object.prototype, {
      //foo会成为所创建对象的数据属性
      foo: { writable:true, configurable:true, value: "hello" },
      //bar会成为所创建对象的访问器属性
      bar: {
        configurable: false,
        get: function() { return 10 },
        set: function(value) { console.log("Setting `o.bar` to", value) }
    }})
     
     
    function Constructor(){}
    o = new Constructor();
    // 上面的一句就相当于:
    o = Object.create(Constructor.prototype);
    //如果在Constructor函数中有一些初始化代码,Object.create不能执行那些代码
     
     
    //创建一个以另一个空对象为原型,且拥有一个属性p的对象
    o = Object.create({}, { p: { value: 42 } });
     
    //省略了的属性特性默认为false,所以属性p是不可写,不可枚举,不可配置的
    //虽然赋值24,但是实际值还是42
    o.p = 24;
    
    //只能枚举出新增加的属性“q”,属性“p”不可枚举
    o.q = 12;
    for (var prop in o) {
       console.log(prop)
    }
    
    //无法删除 
    delete o.p
     
    //创建一个可写的,可枚举的,可配置的属性p
    o2 = Object.create({}, { p: { value: 42, writable: true, enumerable: true, configurable: true } });
  • 相关阅读:
    Commander Nodejs 命令行接口
    数据库集群 ---续集
    数据库集群
    实时查看linux下的日志
    自动化测试
    python中list和dict
    super与this的用法
    数据类型
    父类调用子类方法
    子类调用父类方法
  • 原文地址:https://www.cnblogs.com/kongxianghai/p/3010565.html
Copyright © 2011-2022 走看看