我有:
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/