前端杂货随记

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

2018-02-04  本文已影响1人  程序蜗牛

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

function object(o){
    function F(){}   // 临时性的构造函数
    F.prototype = o;
    return new F();
}
var car = {
    master: "car1Master",
    color: "黑色",
    colorArray:["黑色","白色","红色","蓝色"]
}
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);
// 结果:绿色
上一篇下一篇

猜你喜欢

热点阅读