gpt4 book ai didi

javascript - 在闭包中访问类成员

转载 作者:搜寻专家 更新时间:2023-11-01 04:57:26 24 4
gpt4 key购买 nike

我在这个方法中有一个类方法和一个闭包。我如何从闭包中访问类成员?

Person = function(x) {
this.x = x;
}

Person.prototype = {
myMethod: function() {
$('#myBtn').click( function() {
// how to access to this.x? the this reference points in another context
});
}
}

最佳答案

使用Function.prototype.bind会在这里帮助你

Person = function(x) {
this.x = x;
}

Person.prototype.myMethod = function() {
$('#myBtn').click(function() {
this.x;
}.bind(this));
};

你也可以在这里使用一些更好的代码分离

Person = function(x) {
this.x = x;
};

Person.prototype.myMethod = function {
$('#myBtn').click(this.clickHandler.bind(this));
};

Person.prototype.clickHandler = function(event) {
console.log(this.x);
};

注意如果您想支持旧版浏览器,请查看es5-shim


编辑

我将在大约 6 个月后重新访问它,我可能会以不同的方式编写上面的代码。我喜欢这里的私有(private)/公开曝光。此外,不需要任何奇特的绑定(bind)或类似的东西 ^.^

function Person(x, $button) {

// private api
function onClick(event) {
console.log(x);
}

function myMethod() {
$button.click();
}

// exports
this.x = x;
this.myMethod = myMethod;

// init
$button.click(onClick);
}

var b = $("#myBtn"),
p = new Person("foo", b);

p.x; // "foo"
p.myMethod(); // "foo"
btn.click(); // "foo"

关于javascript - 在闭包中访问类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561620/

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