关于this的一个代码片段

2019-07-08  本文已影响0人  明灭_

关于this的误解:this指向函数自身

function foo(num) {
  console.log("foo: " + num);
  this.count++;
}

foo.count = 0;

var i;
for(i=0; i<10; i++) {
  if(i > 5) {
    foo(i);
  }
}
// foo被调用了多少次呢?
console.log(foo.count); // 0

改进

function foo(num) {
  console.log("foo: " + num);
  this.count++;
}

foo.count = 0;

var i;
for(i=0; i<10; i++) {
  if(i > 5) {
    foo.call(foo, i); // 使用call改变this的指向
  }
}

console.log(foo.count);

function foo(num) {
  console.log("foo: " + num);
  foo.count++;
}

foo.count = 0;

var i;
for(i=0; i<10; i++) {
  if(i > 5) {
    foo(i);
  }
}

console.log(foo.count);
上一篇 下一篇

猜你喜欢

热点阅读