javascript - 下面这段代码为什么不能实现正确逻辑?
本文介绍了javascript - 下面这段代码为什么不能实现正确逻辑?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
var myNumber = {
value: 1,
add: function(i){
var helper = function(i){
console.log(this);
this.value += i;
}
helper(i);
}
}
myNumber.add(1);
解决方案
--update2--
对题主的代码进行了一点修改
var myNumber = {
value: 1,
add: function(i){
var helper = function(i){
console.log(this);
this.value += i;
}
helper.call(myNumber,i);
}
}
myNumber.add(1);
区别在于原来使用helper(i)
,改成了helper.call(myNumber, i);
,
这样子可以保证在helper函数内部的this对象指向的是myNumber
,而不是原来的window
对象。
如果不用helper函数的,可以简单点,
var MyNumber = {
value : 1,
add: function(i) {
MyNumber.value += i;
}
};
MyNumber.add(1);
console.log(MyNumber.value);
这样子呢?
--update--
var MyNumber = (function() {
var value = 1;
var helper = function(i) {
value += i;
};
return {
add: function(i) {
helper(i);
},
get: function() {
return value;
}
}
})();
MyNumber.add(1);
console.log(MyNumber.get());
MyNumber.add(1);
console.log(MyNumber.get());
这篇关于javascript - 下面这段代码为什么不能实现正确逻辑?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文