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
属性?
答案 0 :(得分:1)
你可以把它变成静态属性。
var Apple = function() {
};
Apple.hello = 'alrightalrightalright';
var Banana = function() {
this.howdy = 'matthew mcconaughhey';
console.log(Apple.hello); // returns 'alrightalrightalright';
};
答案 1 :(得分:1)
要按字面意思回答您的问题,不使用您对Apple
对象进行编码的方式,如果没有hello
对象的实例,则无法访问Apple
属性。
hello
属性仅存在于Apple
对象的实例上,因此您必须拥有该对象的实例才能在a.hello
中引用该属性。< / p>
您可以重新设计存储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
对象中引用它,因为它不是每个{{1}的属性对象了。所有对它的引用都需要Apple
。
最后,您需要确定这是否真的应该是Apple.hello
对象的属性,该属性可能对每个单独的Apple
对象具有唯一值,或者如果这只是一个Apple
变量,您只需定义一次,并从任何地方引用该定义。