我有:
View1.prototype.function1 = function() {
this.test = "Hello";
};
我想在这里打电话给测试:
View2.prototype.funcion2 = function() {
alert(View1.test);
};
但是我得到的错误是View1不存在。
想法?
答案 0 :(得分:2)
我不清楚你要做什么,以下内容可能会有所帮助(<或p>)。
ECMAScript中的一个约定是以大写字母开头的变量名是构造函数,例如
function View() {
...
}
要将方法添加到由其创建的所有实例共享的构造函数中,请为构造函数的原型指定一个函数:
View.prototype.f1 = function() {
this.test = "Hello";
};
现在创建一个实例:
var view1 = new View();
并调用方法:
view1.f1();
这会调用 View.prototype.f1 并将 view1 作为此值传递,因此 test 属性添加值为“Hello”:
alert(view1.test); // Hello
您无法调用 test ,因为它的值是字符串,而字符串不可调用。只有实现内部[[Call]]
方法的对象(如函数或宿主方法)才可调用。
您可能正在努力进行原型继承。如果是这样,请在这里问。网上有很多文章试图解释它,但大多数都非常糟糕。
PS:Firefox似乎不喜欢“function1”作为标识符。
答案 1 :(得分:0)
View1.prototype.function1.call(View1);
View2.prototype.function2 = function() {
alert(View1.test);
};
或将View1
更改为对象。