繁体   English   中英

从另一个函数中调用函数的属性

[英]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.helloBanana函数中做到这一点,因为aApple一个实例。 但是,当您重新访问代码时,这可能在后续阶段容易出错。

有没有办法可以在不引用实例的情况下从另一个函数引用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.helloApple对象中引用它,因为它不再是每个Apple对象的属性。 所有对它的引用都需要是Apple.hello


最后,您需要确定这是否真的应该是Apple对象的属性,该属性可能对每个单独的Apple对象具有唯一值,或者如果这实际上只是一个static变量,您可以只定义一次和引用来自任何地方的那个定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM