[英]Call property of a function from within another function
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();
在上面的代码中(这是我已经拥有的简化形式),我想从Banana
函数中调用Apple
函数的hello
属性。 显然我可以通过a.hello
在Banana
函数中做到这一点,因为a
是Apple
一个实例。 但是,当您重新访问代码时,这可能在后续阶段容易出错。
有没有办法可以在不引用实例的情况下从另一个函数引用Apple
函数的hello
属性?
你可以把它变成一个静态属性。
var Apple = function() {
};
Apple.hello = 'alrightalrightalright';
var Banana = function() {
this.howdy = 'matthew mcconaughhey';
console.log(Apple.hello); // returns 'alrightalrightalright';
};
要按字面意思回答您的问题,不管您编写Apple
对象的方式如何,如果没有Apple
对象的实例,则无法访问hello
属性。
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
实例,你都可以使用this.hello
在Apple
对象中引用它,因为它不再是每个Apple
对象的属性。 所有对它的引用都需要是Apple.hello
。
最后,您需要确定这是否真的应该是Apple
对象的属性,该属性可能对每个单独的Apple
对象具有唯一值,或者如果这实际上只是一个static
变量,您可以只定义一次和引用来自任何地方的那个定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.