MAIBILAI

prototypal-inheritance

全部标签

javascript - 如果我们在 JavaScript 中填充 fn.bind(),为什么你必须检查 "this"的类型?

我在Mozillapolyfill中看到fn.bind()像这样:if(!Function.prototype.bind){Function.prototype.bind=function(oThis){if(typeofthis!=='function'){//closestthingpossibletotheECMAScript5//internalIsCallablefunctionthrownewTypeError('Function.prototype.bind-whatistryingtobeboundisnotcallable');}//o

javascript - 如何从 javascript 类型中删除方法

我有一些在第3方网站上运行的javascript,这需要我临时向Array类型添加一个函数,例如Array.prototype.foo=function(){alert("foo'sforeveryone!");};我想成为一名优秀的开发人员,并且尽可能不污染其他人代码的类型系统,所以一旦不再需要该功能,我想再次删除该功能。这可能吗? 最佳答案 您可以使用delete,这通常适用于从对象中删除所有类型的属性:deleteArray.prototype.foo;示例:http://jsbin.com/iyamu

javascript - Backbone.js:模型继承导致共享数据

过去两天我一直在努力解决这个问题。出于某种原因,主干正在跨继承的子模型共享父实例数据。这是一个例子:varBase=Backbone.Model.extend({index:[]});varGroup=Base.extend({initialize:function(){this.index.push('fromgroup');}});varUser=Base.extend({initialize:function(){this.index.push('fromuser');}});varuser=newUser();console.log(user.i

javascript - 范围链查找与原型(prototype)查找 - 哪个是什么时候

如果一个变量在需要时在函数中不可用,那么它会在作用域链(它是一个闭包)中查找,但其他时候它会在原型(prototype)链中查找。我正在努力思考什么时候发生。我想知道是否有人可以为我拨开迷雾,或者让我引用一些专门讨论这个主题的文献。例如,我这样说是否正确:-对象和因此绑定(bind)到上下文(this)的公共(public)变量总是在原型(prototype)链中查找?-始终在作用域链中查找私有(private)变量(即执行上下文中的函数链)?-是否存在程序同时查看/查看其中一个的情况?我测试了三种不同的场景(作用域链查找、原型(prototype)查找和无查找),但不幸的是,它对深入

javascript - 原型(prototype)继承的真实例子是什么?

这个问题在这里已经有了答案:DoessomeJavaScriptlibraryusedynamicaspectsoftheprototypesystem?(3个答案)关闭8年前。我正在尝试提高JavaScript的水平(我在工作中用得不多),并且已经很好地了解构造函数以及如何实例化从它们继承属性的新对象。但通常要真正学到一些东西,我需要在我正在从事的真实项目中使用它,并在实际中看到它。问题是,我正在阅读的所有内容都使用像这样的示例来解释继承:functionApple(type){this.type=type;this.color="red";this.getInfo=

javascript - 私有(private)和特权方法与原型(prototype)方法

在JavaScript中,我可以通过在构造函数中声明来创建私有(private)和特权方法。通过这种方式,我必须将它们移出对象的原型(prototype)。然后我失去了继承的可能性和一些性能,因为每个对象都将拥有这些方法的自己的副本,而不是访问一个原型(prototype)对象。所以我现在的问题是什么可能是petter模式:是否使用私有(private)和特权方法。我不太喜欢悬挂,所以我想避免这种情况。那怎么办呢?你的经历是什么? 最佳答案 我从未发现在JavaScript中创建所谓的“私有(private)”函数有任何值(valu

javascript - 为什么在 javascript 中使用链式原型(prototype)继承?

perf为什么我们构建原型(prototype)继承链而不是使用对象组合。通过原型(prototype)查找链中的每一步都非常昂贵。这是一些虚拟示例代码:varlower={"foo":"bar"};varupper={"bar":"foo"};varchained=Object.create(lower,pd(upper));varchainedPrototype=Object.create(chained);varcombinedPrototype=Object.create(pd.merge(lower,upper)

javascript - 有没有有效的方法在 javascript 中使用 `__proto__` 或 `setPrototypeOf()`?

MDN有一个关于修改代码原型(prototype)的巨大警告:Changingthe[[Prototype]]ofanobjectis,bythenatureofhowmodernJavaScriptenginesoptimizepropertyaccesses,averyslowoperation,ineverybrowserandJavaScriptengine.Theeffectsonperformanceofalteringinheritancearesubtleandfar-flung,andarenotlimitedtosimplythetimespentintheObje

javascript - 在基于原型(prototype)继承的语言中使用类

followinganswertothisquestion很好地解释了经典继承和原型(prototype)继承之间的区别。我很想了解这一点,因为我开始使用Java,但后来转向了Javascript。在他的回答中,他针对原型(prototype)继承指出,“所有关于类的业务都消失了。如果你想要一个对象,你只需编写一个对象。”但是有这么多文档和questions关于如何在Javascript中“编写类”。为什么要插入这种语言成为它不是的东西。我正在寻找在JS应用程序中使用类在这种原型(prototype)语言中更明智的情况的具体示例,以及笨拙地将方钉插入圆孔的好处。正如Aravind所说,

javascript - javascript中的原型(prototype)继承概念作为基于原型(prototype)的语言

你知道Javascript是一个prototype-basedprogramminglanguage.我读过一些关于Javascript及其原型(prototype)继承概念的书籍,但是:“如果你不能向一个6岁的child解释它,那么你自己真的不明白。”。好吧,我试图向一个22岁的friend解释JavaScript原型(prototype)概念,但完全失败了!你会如何向一个对该主题异常感兴趣的6岁child解释它?我在StackOverflow中看到了一些例子,但没有帮助。 最佳答案 经典继承是关于扩展事物的类型。假设您有一个类,