使用$ .extend()进行原型继承?

时间:2012-01-26 19:31:30

标签: javascript jquery oop inheritance prototypal-inheritance

也许这是一个疯狂的问题,但是像:

var MyPrototypeObject {
    prop: 0;
};    
var ob1 = Object.create(MyPrototypeObject);
var ob2 = { 
    meth: function() { 
        this.prop = 5; // update prop 
        return this.prop;
    }
};

其中Object.create克隆原型,而$.extend用于向ob1添加其他方法,其中this.prop指向原型?添加新方法的最佳方法是什么?

$.extend(ob1, ob2);

相关:Override Methods with Prototypal Inheritance

1 个答案:

答案 0 :(得分:1)

pd-style类似,建议

var SomeProto = {
    prop: 0;
};    

var ob1 = extend(Object.create(SomeProto), { 
    meth: function meth() { 
        return (this.prop = 5); // update prop 
    }
});

这是在JavaScript中处理OO的有效方法。请注意,$.extend是执行此操作的糟糕实现,因为它具有isPlainObject检查,该检查为具有原型的对象返回false