gpt4 book ai didi

javascript - 使用模块模式时访问父作用域中的变量

转载 作者:行者123 更新时间:2023-11-28 18:38:06 25 4
gpt4 key购买 nike

我想知道访问 obj 的最佳方式是什么?本例中的变量:

function Module() {


$('foo').on('click', function() {
if (obj.test === true) {
// do something
}
})


return {
setObj: function(obj) {
// what should I do
}
}
}

有没有简单的方法来访问 obj在点击处理程序中。我正在寻找最简单的方法。

最佳答案

声明obj,它在两个函数的范围内:

function Module() {

var obj;

$('foo').on('click', function() {
if (obj.test === true) {
// do something
}
})


return {
setObj: function(_obj) {
obj = _obj;
}
}
}

如果 Module 用作构造函数(使用 new),您也可以使用以下方法:

function Module() {

var self = this;

$('foo').on('click', function() {
if (self.obj.test === true) {
// do something
}
})

}

Module.prototype.setObj = function ( obj ) {
this.obj = obj;
};

或者使用 ES6:

function Module() {

$('foo').on('click', _ => {
if (this.obj.test === true) {
// do something
}
})

}

Module.prototype.setObj = function ( obj ) {
this.obj = obj;
};

关于javascript - 使用模块模式时访问父作用域中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36633755/

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