原型中的函数声明是否“污染”了?的原型
Do function declarations in a prototype "pollute" the prototype?
这和
有什么区别?Library1 = function () {};
Library1.prototype.myFunc = function (p) {
function helper1(p) {return p * 2; }
function helper2(p) {return p * 4; }
this.result = helper1(p) + helper2(p);
}
:
Library2 = function () {};
Library2.prototype.myFunc = function(p) {
this.result = Library2.helper1(p) + Library2.helper2(p);
}
Library2.helper1 = function(p) {return p * 2; }
Library2.helper2 = function(p) {return p * 4; }
我得到相同的结果:
test = new Library1();
test.myFunc(2);
window.console.log(test.result); // 12
test = new Library2();
test.myFunc(2);
window.console.log(test.result); // 12
一种方法优于另一种方法吗?
这篇文章暗示方法1"污染"了原型:什么是正确的方式来声明javascript原型函数调用助手函数。
在原型中的函数声明污染原型,而分别分配它们在某种程度上更干净?
在原型方法中的函数声明会污染原型吗?
不,因为它们是私有的。
分配辅助函数作为构造函数的方法更干净吗?
不,因为这样你污染了构造函数。
一种方法优于另一种方法吗?
如果你不想污染对象,最好在方法内部使用函数声明。
这样做的缺点是每次调用myFunc
时,必须重新创建helper1
和helper2
。
Library1 = (function() {
function Library1() {}
function helper1(p) {return p * 2; }
function helper2(p) {return p * 4; }
Library1.prototype.myFunc = function (p) {
this.result = helper1(p) + helper2(p);
}
return Library1;
})();
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- 引用类变量中的原型方法
- 如何从对象的原型方法访问JavaScript对象属性
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- Node.js中的JavaScript原型对象效率
- 重载JS'firefox中的对象原型
- “util.inherits”和在NodeJS中扩展原型之间的区别
- 附加到原型属性的Do函数没有闭包
- 使用方括号访问插件原型函数
- 为什么JSON.stringify没有序列化原型值
- 为什么要返回'这'在导致循环的JavaScript原型中
- 带有对象/原型的链式承诺(Q延期)
- 如何覆盖原型中的事件侦听器
- 如何在Mocha/Chai中测试JS原型(非模块)
- 我将如何将Base的原型分配给User
- 原型和用法 Javascript
- 别名或以其他方式合并两个具有不同名称的相同对象原型
- JavaScript对象不是从原型链继承的
- 原型函数污染JavaScript数组
- 原型中的函数声明是否“污染”了?的原型