WEB开发网
开发学院网页设计JavaScript JavaScript 中的 this, call, apply, bind... 阅读

JavaScript 中的 this, call, apply, bind...

 2009-09-30 00:00:00 来源:WEB开发网   
核心提示: 上面有4次call,其中理解Calculate方法中的this是得出正确答案的关键第一次:this是1,JavaScript 中的 this, call, apply, bind...(3),this.first = undefined 作乘法运算当然得出NaN第二次:this是{first:1

上面有4次call,其中理解Calculate方法中的this是得出正确答案的关键

第一次:this是1,this.first = undefined 作乘法运算当然得出NaN

第二次:this是{first:10}

第三次:.....

其实可以看出这里使用了call后我们可以轻而易举的改变this的内容,那么是否能想到在上面第一部分this的使用时某些时候用call来调用就可以避免我犯那些由于没搞清楚this是什么而导致的错误?答案是肯定的,但是先看下apply

3, apply

其实这个跟call类似,修改下刚才call中代码,如果我们要计算3个数而不是2个数的积怎么办?

   0. <script>  
   1. var first_json = {  
   2. first: 20  
   3. };  
   4. var first_obj = function(first){  
   5. this.first = first;  
   6. }  
   7. var obj = new first_obj(100);  
   8. function Calculate(){  
   9. var result = this.first;  
  10. for(var i = 0; i < arguments.length; i++){  
  11. result = result * arguments[i];  
  12. }  
  13. return result;  
  14. }  
  15. document.writeln(Calculate.apply(1, [5, 5])); //NaN: Not a number  
  16. document.writeln(Calculate.apply({first:10}, [5, 5])); //50 * 5  
  17. document.writeln(Calculate.apply(first_json, [5, 5])); //100 * 5  
  18. document.writeln(Calculate.apply(obj, [5, 5])); //500 * 5  
  19. document.writeln(Calculate.call(obj, [5, 5])); //NaN: Not a number  
  20. </script>NaN  
  21. 250  
  22. 500  
  23. 2500  
  24. NaN  
NaN
250
500
2500
NaN

上一页  1 2 3 4  下一页

Tags:JavaScript this call

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接