调用函数的内部变量

时间:2011-08-04 13:17:56

标签: javascript function

为什么我必须使用函数的新实例来获取内部变量,但我不能使用函数本身,

为什么会起作用

function bla(){this.a = 1}
b = new bla
alert (b.a)

这不是

function bla(){this.a = 1}
alert (bla.a)

4 个答案:

答案 0 :(得分:3)

因为你必须调用函数才能定义变量。

如果你想做你正在谈论的事情,你可以使用对象文字

var bla = 
{
  a: 1,

  displayA: function() {
    alert(bla.a);
  }
};

alert(bla.a); // Displays 1
bla.displayA(); // Displays 1

答案 1 :(得分:2)

您必须创建对象的新实例。在这种情况下,第一个起作用是因为你声明了

b = new bla

只是一个小贴士,你应该写这个更像是为了防止可能的错误......

function bla(){this.a = 1;}
b = new bla();
alert(b.a);

答案 2 :(得分:0)

因为当您以这种方式使用函数时,您实际上是在创建具有属性的对象,并且如果不使用new关键字实例化对象,则无法访问对象的属性。

你可以这样做,这也会返回1:

function bla(){ return 1;}
alert (bla());

答案 3 :(得分:0)

尚未指出的是:在案件中:

function bla(){this.a = 1}
alert (bla.a)

bla 尚未被调用为构造函数或对象的方法,因此将关键字设置为global / window对象。因此, a 属性被添加到全局/窗口对象中,您可以执行以下操作:

alert(a)

但这通常是不理想的结果。在ES5严格模式下,以这种方式调用函数将导致其关键字未定义,因此this.a将引发错误。