如果我的代码看起来像这样,使用var vs这个的首选方法是什么?
function MyObject() {
var self = this;
var a = 1;
this.b = 2;
var innerMethod = function() {
logMessage(a);
logMessage(self.b);
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,只要MyObject存在,var就会存活下来,所以这和使用它一样吗?
编辑:
为了更清楚地澄清这个问题,我只对从对象内部而不是从外部访问变量感兴趣.
在JavaScript中你可以用许多不同的方式做同样的事情.
考虑一下例子:
1:
function Circle(radius) {
return {
"r" : radius,
"area" : function(){
return Circle.pi * this.r * this.r;
}
}
}
Circle.pi = 3.14159;
var a = Circle(10);
alert(a.area());
Run Code Online (Sandbox Code Playgroud)
2:
function Circle(radius) {
this.r = radius;
}
Circle.pi = 3.14159;
Circle.prototype.area = function(){
return Circle.pi * this.r * this.r;
}
var a = new Circle(10);
alert(a.area());
Run Code Online (Sandbox Code Playgroud)
第二个比第一个好,因为我们没有为Circle的任何实例定义相同的功能区域.
但让我们考虑3:
function Circle(radius) {
return {
"r" : radius,
"area" : Circle.area
}
}
Circle.pi = 3.14159; …Run Code Online (Sandbox Code Playgroud)