javascript中有一个静态方法Object.create,它的作用是创建具有指定原型对象的新对象。

underscore有一个相同功能的函数,create:

var Ctor = function(){};
var baseCreate = function(prototype) {
    if (!_.isObject(prototype)) return {};
    if (nativeCreate) return nativeCreate(prototype);
    Ctor.prototype = prototype;
    var result = new Ctor;
    Ctor.prototype = null;
    return result;
};

_.create = function(prototype, props) {
    var result = baseCreate(prototype);
    if (props) _.extendOwn(result, props);
    return result;
};

如果你了解过Object.create的polyfill,上面代码所做的没什么难以理解的,create主要所做的就是把传入的对象作为我们要返回对象的原型对象,因此需要借助Ctor这个构造函数进行关联。

results matching ""

    No results matching ""