Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:访问不同类中的对象_Javascript_Javascript Objects - Fatal编程技术网

JavaScript:访问不同类中的对象

JavaScript:访问不同类中的对象,javascript,javascript-objects,Javascript,Javascript Objects,我有: 我想在这里调用test: View1.prototype.function1 = function() { this.test = "Hello"; }; 但是,我可能会得到一个错误,即View1不存在 想法 或者将View1更改为一个对象。我不清楚您想做什么,以下内容可能会有帮助(或没有帮助) ECMAScript中有一个惯例,即以大写字母开头的变量名是构造函数,例如 View1.prototype.function1.call(View1); View2.prototyp

我有:

我想在这里调用test:

View1.prototype.function1 = function() {
    this.test = "Hello";
};
但是,我可能会得到一个错误,即View1不存在

想法


或者将
View1
更改为一个对象。

我不清楚您想做什么,以下内容可能会有帮助(或没有帮助)

ECMAScript中有一个惯例,即以大写字母开头的变量名是构造函数,例如

View1.prototype.function1.call(View1);

View2.prototype.function2 = function() {
  alert(View1.test);
};
要向构造函数中添加一个由所有从该构造函数创建的实例共享的方法,请向构造函数的原型分配一个函数:

function View() {
  ...
}
现在创建一个实例:

View.prototype.f1 = function() {
    this.test = "Hello";
};
并调用该方法:

var view1 = new View();
这将调用View.prototype.f1并将view1作为其此值传递,因此将添加一个测试属性,其值为“Hello”:

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

您可能正在与原型继承作斗争。如果是,请在这里询问。网上有很多文章试图解释这一点,但大多数都非常糟糕


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

您需要实例化
View1
。例如,
var view=newview1();警报(查看、测试)。还有其他不涉及实例化View1的解决方案吗?您设计它是为了这样做,因为
View1
的每个实例都有自己的
test
实例。您可以只使用
View1.test=“Hello”
@WaleedKhan+1,不过您还需要调用
view.function1()
。或者这可以在
View1()
构造函数中完成正在使用吗?我的意思是在
var View1={test:'Hello'}中我只是想澄清函数是一个对象,谢谢这帮助我缩小了问题的范围!
var view1 = new View();
view1.f1();
alert(view1.test); // Hello