我有:

View1.prototype.function1 = function() {
    this.test = "Hello";
};


我想在这里打电话给test:

View2.prototype.funcion2 = function() {
   alert(View1.test);
};


但是我得到的错误是View1不存在。

有想法吗?

最佳答案

我不清楚您要做什么,以下内容可能会有所帮助。

ECMAScript中的一个约定是,以大写字母开头的变量名称是构造函数,例如

function View() {
  ...
}


要将一个方法添加到构造方法中,该方法由创建该方法的所有实例共享,请向构造方法的原型分配一个函数:

View.prototype.f1 = function() {
    this.test = "Hello";
};


现在创建一个实例:

var view1 = new View();


并调用方法:

view1.f1();


这将调用View.prototype.f1并将view1作为其this值传递,因此将添加一个值为“ Hello”的测试属性:

alert(view1.test); // Hello


您无法调用test,因为它的值是一个字符串,并且字符串不可调用。只有实现内部[[Call]]方法的对象(例如函数或宿主方法)才可以调用。

您可能在原型继承方面苦苦挣扎。如果是这样,请在这里询问。网络上有很多文章试图对此进行解释,但是大多数文章都非常糟糕。

PS:Firefox似乎不喜欢“ function1”作为标识符。

关于javascript - JavaScript:访问不同类中的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19106662/

10-12 16:08