gpt4 book ai didi

Javascript访问父公共(public)变量

转载 作者:行者123 更新时间:2023-11-30 05:36:09 24 4
gpt4 key购买 nike

我正在尝试让子类访问父变量。有人可以告诉我这段代码有什么问题吗?

function a() {
this.val = 600;
var self = this;

this.c = new b();

this.d = function() {
console.log("P:");
this.c.p();
}
}

function b() {
this.val2 = 1;
this.p = function() {
console.log(self.val);
}
}

var test = new a();
test.d();

最佳答案

b 函数中,self 是未定义的,因为它没有创建闭包。这意味着您不能引用 self

您的编码方式不会创建闭包。

如果你这样做它会起作用:

http://jsfiddle.net/y2A93/

function a() {
this.val = 600;
var self = this;

this.c = new b();
this.c.self = self; // create `self` variable

this.d = function() {
console.log("P:");
this.c.p();
}
}

function b() {
this.val2 = 1;
this.p = function() {
console.log(this.self.val); // create closure that passes `self` from `b` to `p`.
}
}

var test = new a();
test.d();

我所做的是在名为 cb 实例中创建一个 self 变量。然后我通过从内部函数访问 b 中的 self 创建了一个闭包; p 在这种情况下。

关于Javascript访问父公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701459/

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