我有:
View1.prototype.function1 = function() {
this.test = "Hello";
};
我想在这里调用测试:
View2.prototype.funcion2 = function() {
alert(View1.test);
};
但是我得到 View1 不存在的错误。
想法?
我有:
View1.prototype.function1 = function() {
this.test = "Hello";
};
我想在这里调用测试:
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”作为标识符。
View1.prototype.function1.call(View1);
View2.prototype.function2 = function() {
alert(View1.test);
};
或者换View1
一个对象。