这些原型声明中哪一个更好,为什么?
Which of these prototype declarations is better and why?
我正试图决定如何在原型中为我的主库设置我的函数。
我应该使用:
Library.prototype.funcA = function () {.....};
Library.prototype.fucnB = function () {.....};
etc..
或
Library.prototype = {
funcA: function () {.....},
funcB: function () {.....},
etc..
};
所以基本上第一个选择将我所有的功能添加到原型中。第二个选项用一个包含我所有函数的对象替换原型。这有关系吗?
我会选择第一个选项。
你不希望完全替换原型,因为你永远不知道从另一个项目添加了什么。
如果它是一个完全独立的东西,只有你在做,第二个是一个好的选择。但这仍然不是一个好习惯,这样你就不会在不经意间破坏了其他东西所依赖的功能。
在这种情况下,不,这无关紧要。它是你的对象,你没有尝试从任何东西继承,所以覆盖原型(而不是附加到它)没有关系。
在一般情况下,是的,这可能很重要。您正在破坏对象可用的任何现有原型方法。除非非常确定代码拥有相关对象,否则不应该这样做。相反,将方法附加到原型中也需要思考;其他对象可能与你正在修改原型的对象共享一个原型
这很重要。你必须注意到prototype
是一个对象。所以你的语句"第二个选项用包含我所有函数的对象替换原型。"为false。它只是重置了原型对象。
所以使用
Library.prototype = {
funcA: function () {.....},
funcB: function () {.....},
etc..
};
更快,但是你删除了在赋值之前的所有原型函数:
Library.prototype.funcA
是添加 a属性。
所以,如果你必须添加一个属性(而不是删除一个),使用:
Library.prototype.funcA
如果Library
有你不想失去的原型属性/方法,你会想要通过增加已经存在的原型来添加它们。否则就看个人喜好了。我喜欢第二种方法,因为它看起来更干净,但我在我的代码中使用了这两种方法。
相关文章:
- 有没有更好的动手、具体的方法来学习Javascript
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 在JavaScript中拆分日期字符串的更好方法是什么
- 为什么$.brower被弃用?还有什么更好的替代方案
- 为什么 +str 在 JS 中比 str*1 更好地将字符串转换为数字
- IE与我的javascript后台更改代码配合得更好.为什么?
- 为什么将 JSON 对象存储在 cookie 中比字符串更安全或更好
- 匿名函数与命名函数哪个更好,为什么
- 标题大小写一个句子 - 哪个解决方案更好,为什么
- 为什么这个jQuery显示/隐藏切换有效,以及我如何使它变得更好
- SetTimeout -为什么传递函数比传递字符串更好
- lang . isundefined vs . typeof undefined,哪个更好,为什么?
- 性能方面,算法复杂性方面,下面两个JS函数中哪一个用于将字符串的第一个字母大写更好,为什么?
- 为什么Angular JS中的依赖项注入比手工管理依赖项更好
- 为什么requestAnimationFrame比setInterval或setTimeout更好
- 为什么要在数组上使用排序映射.在某些情况下如何更好
- 哪个更好,为什么
- 哪一种定义变量的方法更好?为什么?
- 为什么属性初始化为null的对象数组处理得更好
- 这些原型声明中哪一个更好,为什么?