var Apple = function() {
this.hello = 'alrightalrightalright';
}
var Banana = function() {
this.howdy = 'matthew mcconaughhey';
console.log(a.hello); // returns 'alrightalrightalright';
}
var a = new Apple();
var b = new Banana();
在上面的代码(这是我已经拥有的简化形式)中,我想从
hello
函数中调用Apple
函数的Banana
属性。显然,由于a.hello
是Banana
的实例,因此可以通过a
函数中的Apple
来执行此操作。但是,这在以后的阶段在您重新访问代码时可能容易出错。有没有一种方法可以从另一个函数中引用
hello
函数的Apple
属性而不引用实例? 最佳答案
要从字面上回答您的问题,以您编写Apple
对象的方式进行编码时,不能不使用hello
对象的实例而不能访问Apple
属性。hello
属性仅存在于Apple
对象的实例上,因此必须具有该对象的实例才能像a.hello
中那样引用该属性。
您可以重新设计hello
属性的存储位置,以便可以使用Apple
对象的实例访问它,但这意味着更改该属性的定义位置。
例如,可以通过这样定义它来使它成为一个静态变量(它不是任何特定Apple
对象的属性):
var Apple = function() {
}
Apple.hello = 'alrightalrightalright';
然后,您可以像这样引用它:
var Banana = function() {
this.howdy = 'matthew mcconaughhey';
console.log(Apple.hello); // returns 'alrightalrightalright';
}
var b = new Banana();
但是,请记住,这会更改
hello
属性的行为。现在,它不是每个Apple
对象的单独属性。相反,它实际上是Apple
函数对象上的单个全局属性。无论您有多少Apple
实例,它都只有一个值,您可以使用Apple
在this.hello
对象内引用它,因为它不再是每个Apple
对象的属性。对它的所有引用都必须为Apple.hello
。最后,您需要确定这是否确实是
Apple
对象的一个属性,该属性可能对每个单独的Apple
对象都具有唯一的值,或者这是否仅仅是您自己的static
变量可以只定义一次并从任何地方引用一个定义。