美文网首页
关于this的一个代码片段

关于this的一个代码片段

作者: 明灭_ | 来源:发表于2019-07-08 14:07 被阅读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
  • foo被执行了4次,但是foo.count仍然是0。这是因为执行foo.count=0时,的确向函数对象foo添加了一个属性count,但是函数内部代码this.count中的this并不是指向那个函数对象,所以虽然属性名相同,根对象却并不相同。
  • this.count++实际上创建了一个全局变量count,它的值为NaN

改进

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);

相关文章

  • 关于this的一个代码片段

    关于this的误解:this指向函数自身 foo被执行了4次,但是foo.count仍然是0。这是因为执行foo....

  • Xcode代码块

    代码片段 Xcode的代码片段(Code Snippets)创建自定义的代码片段,当你重用这些代码片段时,会给你带...

  • Fast Prime List Functions的代码

    把写代码过程中比较重要的代码片段珍藏起来,下边资料是关于Fast Prime List Functions的代码。...

  • vscode 代码片段设置

    文件-首选项-用户片段 选择新建代码片段 打印代码片段

  • 关于设置简书代码片段

    试了 测试code 和 测试code 都不行,最后试了这个符号 ` 才可以 这个必须是英文输入法下, ESC下面的...

  • 代码片段&编程小技巧

    代码片段大全代码片段,代码分享,PHP代码分享,Java代码分享,Ruby代码分享,Python代码分享,HTML...

  • Java中的byte,short,char进行计算时都会提升为i

    代码片段: 关于上面代码片段叙述正确的是()A.输出结果:13B.语句:b6=b4+b5编译出错C.语句:b3=b...

  • 代码片段

    消除table中的th除去了所有border,margin,padding之后还是会有间隙的问题 移动端必须加的代...

  • 代码片段

    简介: 关于代码片段,网上已经有很多资料了,这里主要介绍下结合zyApi如何快速的写出请求模版。 实现: 上面三份...

  • 代码片段

    for循环和迭代器 在判断一个数组中是否包含某个值的时候,开发者经常这样做: 推荐使用for循环遍历的形式或者使用...

网友评论

      本文标题:关于this的一个代码片段

      本文链接:https://www.haomeiwen.com/subject/rtbnhctx.html