gpt4 book ai didi

javascript - 无法从另一个对象调用变量

转载 作者:行者123 更新时间:2023-12-02 14:00:13 25 4
gpt4 key购买 nike

我有 2 个对象:myObject1myObject2。我试图使用名为 incrementmy0bject2 方法从 myObject1 调用私有(private)变量,但 console.logNaN。有没有办法直接从 myObject2 方法调用 myObject1 变量?也许以某种方式扩展它?

var myObject1 = function() {

var x = 0;

return{}
}();

var myObject2 = function() {

return{
increment: function() {
myObject1.x +=1;
console.log(myObject1.x);
}
}
}();

myObject2.increment();

最佳答案

当您在 myObject1 中指定 var x 时,您将该变量声明为私有(private)变量。唯一可以访问该变量的是myObject1 中的方法。正如您所指出的,这个变量是私有(private)的。

您没有明确表示是否想将其保密,因此我假设您只是想访问它。您可以在这里做几件事。您可以通过 this 将变量附加为 myObject1 的对象属性。 this 引用当前范围 (myObject1),因此在 myObject1 中说 this.x 就是在说 myObject1.x。从该函数中,您需要返回 this ,以便它的实例可以访问其所有公共(public)属性。

var myObject1 = function() {
this.x = 0;
return this;
}();

var myObject2 = function() {
return {
increment: function() {
myObject1.x +=1;
console.log(myObject1.x);
}
}
}();

myObject2.increment();

您也可以只返回所需的属性,在本例中为 x。在这种情况下,您可以更好地控制返回的内容,并且得到与上面相同的结果。

var myObject1 = function() {
var x = 0;
return {
x: x,
};
}();

var myObject2 = function() {
return {
increment: function() {
myObject1.x +=1;
console.log(myObject1.x);
}
}
}();

myObject2.increment();

无论哪种方式,这些方法都会公开 myObject1x 属性,使其公开。

关于javascript - 无法从另一个对象调用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com