我想知道在这个示例中访问obj
变量的最佳方法是什么:
function Module() {
$('foo').on('click', function() {
if (obj.test === true) {
// do something
}
})
return {
setObj: function(obj) {
// what should I do
}
}
}
是否有一种简单的方法可以在点击处理程序中访问obj
。我正在寻找最简单的方法。
答案 0 :(得分:3)
声明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;
};