【问题标题】:How do you access constructors variables?你如何访问构造函数变量?
【发布时间】:2012-05-24 12:56:07
【问题描述】:

我在 Javascript 中有一个“类”,并在构造函数中分配了一个变量。我还使用原型来存储变量/方法:

var MyClass = function() 
{ 
    this.age = 100;
};

MyClass.prototype.name = "John";
MyClass.prototype.getAge = function() { return this.age};

alert(MyClass.prototype.name); //Alerts John
alert(MyClass.age); //undefined as expected
alert(MyClass.prototype.getAge()); //undefined??

所以据我所知,除非我从 Class 创建一个对象,否则我无法访问存储在 MyClass 中的构造函数变量:

var theClass = new MyClass();
alert(theClass.age);
alert(theClass.getAge());​

两个警报都会正确返回年龄。

所以重申一下,我可以直接从 MyClass 访问构造函数变量而不需要创建变量吗?

【问题讨论】:

  • 为什么要避免使用变量?
  • @Nealbo,你需要使用like作为静态属性吗?
  • 关于alert(MyClass.prototype.getAge()); //undefined??:它会尝试访问不存在的MyClass.prototype.age。在构造函数内部this 引用了一个空对象,该对象具有来自MyClass.prototypeinherits,因此age永远 分配给MyClass.prototype

标签: javascript prototype-programming


【解决方案1】:

没有。您的示例中的变量age 是在构造函数运行时创建的;因此,在您运行该函数之前它不会可用。

【讨论】:

    【解决方案2】:

    所以据我所知,除非我从 Class 创建一个对象,否则我无法访问存储在 MyClass 中的构造函数变量

    正确。它们在函数体中分配。在函数执行之前,它们不会存在。

    所以重申一下,我可以直接从 MyClass 访问构造函数变量而不需要创建变量吗?

    没有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多