12bet,的读书笔记

Prototype——原型模式

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相似

Polyfill

由于Object.create方法在ES5中定义,在不支持的浏览器中需要polyfill,12博体育,简单的不支持optionalDescriptorObjects如下:

Object.prototype.create = function(parent){
    function F(){}
    F.prototype = parent;
    return new F();
};