先上代码,关于方法中的嵌套函数有3个问题,高手进。 财富值59

2016-10-23 13:44发布

6268 15 3
var myNumber = {   value: 1,   add: function(i){     var helper = function(i){         console.log(this);           this.value += i;     }     helper(i);   } } myNumber.add(1); 

代码中打印的this是个什么对象?
这段代码能否实现使myNumber.value加1的功能?
在不放弃helper函数的前提下,使用apply、bind或者call方法来改变this指向,具体是选择指向哪个对象?
helper.apply(myNumber);
helper.apply(this);
helper.apply(myNumber.add,[i]); 或其他????

15条回答

这三个都是错误的,前两个错误理由相同,即第二个参数为undefined,这会导致+运算结果为NaN,最后一个错误原因为不应该是myNumber.add,你这样写进行运算的是myNumber.add.value而不是你期望的myNumber.value,改成helper.apply(myNumber,[i]);或者helper.call(myNumber.add,i);或者helper.bind(this)(i);都行,建议后面两种写法。

76人赞 添加讨论(0)举报

一周热门 更多>