【发布时间】:2012-08-16 07:45:18
【问题描述】:
我可以通过两种方式声明对象的方法:
第一种方式使用self=this成语。
function SelfIdiomExample(name){
var self = this;
self.sayHello = function (name){
alert("Hello, "+name);
}
}
当您需要在方法中引用对象时(例如,如果该方法将作为回调传递),这很有用。另一种方法是通过修改原型来实现:
function PrototypeModExample(){
//pass
}
PrototypeModExample.prototype.sayHello = function(name){
alert("Hello, "+name);
}
两者的结果相同:
var sieg = new SelfIdiomExample();
var pmeg = new PrototypeModExample();
sieg.sayHello("Barnaby");
pmeg.sayHello("Josephine");
虽然我了解 self=this 成语的用例,但我想知道:
使用在构造函数中创建的方法与在原型中创建的方法相比是否存在性能损失?
【问题讨论】:
-
它只是对变量的赋值引用。 jsperf.com - 用它来衡量“差异” PS:在第一种情况下,你实际上根本不需要
self -
您始终可以使用
this在原型方法中获取对对象的引用。此外,您在第一个 sn-p 中缺少var。 -
请不要忘记用
var声明你的局部变量!!! -
@zerkms 这是一个非常有用的工具。谢谢!它回答了我的问题。不过,我想知道更多关于下面到底发生了什么。
标签: javascript performance idioms