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

发布于 2024-12-28 23:06:53 字数 747 浏览 0 评论 0原文

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

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

where Object.create< /a> 克隆原型,并使用 $.extend 添加其他方法ob1,其中 this.prop 指向原型?添加新方法的最佳方式是什么?

$.extend(ob1, ob2);

相关:使用原型继承覆盖方法

Maybe this is a crazy question, but something like:

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

where Object.create clones the prototype and $.extend is used to add additional methods to ob1, where this.prop points back to the prototype? What's the best way to add new methods?

$.extend(ob1, ob2);

Related: Override Methods with Prototypal Inheritance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼眸印温柔 2025-01-04 23:06:53

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

pd-style is similar and recommends

var SomeProto = {
    prop: 0;
};    

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

This is an effective way of handling OO in JavaScript. Note that $.extend is a shit implementation for doing this because it has an isPlainObject check which returns false for objects that have prototypes

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文