我正在查看一些代码,只是为了确保我不会因为遗漏明显的内容而迷失方向,因为这对我来说似乎没有任何收获。似乎浪费了$ .extend()的用法,但也许有人可以对继承中可能缺少的某些东西有所了解。
所以,我们有这个。
_letsCreateNameSpace('US.somenew.obj');
//this is based on S.stoyanov namespace pattern, what this _letsCreateNameSpace does.
然后我在一些代码中看到了这一点,对我来说这没有意义。
US.somenew.obj = function(){
// some this var assignments.
this.blah = $foo;
}
// this usage of extend escapes me. I don't see a need at this point here.
$.extend(US.somenew.obj.prototype, {
// a bunch of new methods
}
我完全看不到使用$ .extend()而不是仅使用以下内容的好处,因为除了自身之外没有任何扩展。
US.somenew.obj.prototype = {
// a bunch of new methods
}
没有“深度”扩展或其他任何内容。.看起来就像是无缘无故地扩展原型的冗长方式。
我想念什么吗?我在这里缺少某些“树木背后的森林”方法吗?
最佳答案
$.extend
将给定的方法复制到prototype
,而不会覆盖prototype
对象本身。因此,例如,如果您有:
// inheritance
US.somenew.obj.prototype = myproto;
US.somenew.obj.prototype = {
// you lost the inheritance with `myproto`, here
}
使用
$.extend
可以防止这种情况。另外,您不会丢失一些默认属性。例如,constructor
:US.somenew.obj = function () {};
US.somenew.obj.prototype = {};
var o = new US.somenew.obj();
console.log(o.constructor === US.somenew.obj) // false, in that case is `Object`
哪里:
US.somenew.obj = function () {};
$.extend(US.somenew.obj.prototype, {});
var o = new US.somenew.obj();
console.log(o.constructor === US.somenew.obj) // true
关于javascript - 将自己的obj原型(prototype)扩展到(extend())会获得什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15845905/