2016-02-29 57 views
0

如果我这样做是在JavaScript如何从javascript函数中读取值?

var A = function() { 
    alert(this.foo); 
}; 
A["foo"] = "bar"; 
A(); 

我希望提醒bar,但我得到了一个未定义,没有人知道我怎样才能使这项工作?

感谢

+1

'var A = function(){ alert(this.foo); }; A.prototype.foo =“bar”; var x = new A();' –

回答

1

this值是在该方法被调用(除非你使用的new运营商或东西像callbind)的对象。由于您没有将该函数作为方法调用,因此它是默认对象(在浏览器中为window),除非您处于严格模式。

对范围内的功能的唯一参考是A,因此您只能通过alert(A.foo)访问它。

如果你用了一个名为函数表达式:

var A = function myFunction() { 

,那么你将不得不可变myFunction局部范围到功能,你可以使用,而不是A

0
var A = function() { 
      alert(this.foo); 
     }; 
     A["foo"] = "bar"; 
     A.call(A); 

var A = function() { 

}; 

A.prototype.alert = function() { 
    alert(this.foo); 
} 

var a = new A(); 
a["foo"] = "bar"; 
a.alert(); 
1

this指功能的 “父” 对象,而不是函数本身。表达式A()中没有父母。为了“使这项工作”,你必须明确地传递A作为this值:

A.call(A); 

它通常的方式意味着工作是这样的:

var A = { 
    alert: function() { 
     alert(this.foo); 
    } 
}; 

A.foo = 'bar'; 
A.alert(); 

AA.alert()alert()内被用作this的值。