美文网首页前端杂货随记
javascript继承之原型式继承(四)

javascript继承之原型式继承(四)

作者: 程序蜗牛 | 来源:发表于2018-02-04 20:42 被阅读1次

    借助原型可以基于已有的对象创建新的对象,同时还不必因此创建自定义类型

    function object(o){
        function F(){}   // 临时性的构造函数
        F.prototype = o;
        return new F();
    }
    
    • 创建一个对象
    var car = {
        master: "car1Master",
        color: "黑色",
        colorArray:["黑色","白色","红色","蓝色"]
    }
    
    • 通过object方法原型式继承
    var car1 = object(car);
    car1.color = "白色";
    console.log(car1.color);
    car1.colorArray.push("棕色");
    # 结果:白色
    
    var car2 = object(car);
    car2.color = "红色";
    car2.colorArray.push("灰色");
    console.log(car2.color);
    console.log(car1.colorArray);
    console.log(car2.colorArray);
    # 结果:红色
    # 结果:[ '黑色', '白色', '红色', '蓝色', '棕色', '灰色' ]
    

    ECMAScript5新增了Object.create()方法规范了原型式继承,接收两个参数:一个用作新对象原型的对象,二是为新对象定义额外属性的对象

    var car1 = Object.create(car);
    car1.color = "白色";
    car1.colorArray.push("棕色");
    console.log(car1.color);
    
    var car2 = Object.create(car);
    car2.color = "红色";
    car2.colorArray.push("灰色");
    console.log(car2.color);
    

    Object.defineProperties:以指定的任何属性覆盖原型对象上的同名属性

    var car3 = Object.create(car,{
        color: {
            value: "绿色"
        }
    })
    
    console.log(car3.color);
    // 结果:绿色
    

    相关文章

      网友评论

        本文标题:javascript继承之原型式继承(四)

        本文链接:https://www.haomeiwen.com/subject/blfvzxtx.html