12bet,四人帮称Prototype模式是一种基于现有对象模板,12博体育,通过克隆方式创建对象的模式。12bet,而JS中可以认为,Prototype模式是基于原型继承的模式,可以在其中创建对象,作为其他对象的原型。
ECMASript5提供了一个Object.create(prototype, optionalDescriptorObjects)
方法,用于创建一个对象,12bet,使其拥有指定的原型和可选属性:
var parent = {
name: "superlin",
sayHello: function() {
return "hello, " + this.name;
}
};
var child = Object.create(parent, {
id: {
value: 696,
writable: false,
configurable: false,
enumerable: false
},
age: {
value: 21,
writable: true,
configurable: true,
enumerable: true
}
});
console.log(child);
这里第二个参数用于差异继承,具体用法和Object.defineProperties和Object.defineProperty相似
由于Object.create
方法在ES5中定义,在不支持的浏览器中需要polyfill,12博体育,简单的不支持optionalDescriptorObjects
如下:
Object.prototype.create = function(parent){
function F(){}
F.prototype = parent;
return new F();
};