es6对象内函数一般有两种写法:

var person1 = {
name: "p1",
sayThis() {
console.log(this);
}
}; var person2 = {
name: "p2",
sayThis:()=> {
console.log(this);
}
}; person1.sayThis()
person2.sayThis()

输出:

person1的写法,类似于:

var person1 = {
name: "p1",
sayThis: function() {
console.log(this);
}
};

this指向当前调用此方法的对象

person2的写法,使用了箭头函数,箭头函数的this指向当前的执行环境(创建它时所处的上下文)(箭头函数可以捕获其所在上下文的this值),这里当然是window对象,箭头函数并没有自己的this值,它的this继承自外围作用域

function Person() {
this.age = 0;
setInterval(() => {
// 回调里面的 `this` 变量就指向了期望的那个对象了
this.age++;
}, 3000);
} var p = new Person();

备注:call,apply,bind对es6中的this,无效

var objProject = this;
var foo = (() => this);
console.log(foo()); // window
console.log(objProject); // window
console.log(foo() === objProject ); // true
// 作为对象的一个方法调用
var obj = {foo: foo};
console.log(obj.foo() === objProject ); // true
// 尝试使用call来设定this
console.log(foo.call(obj) === objProject ); // true
// 尝试使用bind来设定this
foo = foo.bind(obj);
console.log(foo() === objProject ); // true

最新文章

  1. 用Task代替TheadPool
  2. PixelFormat 像素格式
  3. 【BZOJ 1003】 [ZJOI2006]物流运输trans
  4. centos 安装nginx
  5. jprofiler8使用小贴士
  6. MyEclipse 2014各种优化设置
  7. webpack之前端性能优化(史上最全,不断更新中。。。)
  8. mysql 错误信息
  9. javascript之DOM文档对象模型编程的引入
  10. PyQt:左侧选项卡
  11. echart折线图系列一:折线图基本配置
  12. ape 文件 转化为mp3 文件
  13. 用Itextsharp 组件导出PDF 的文档的方法
  14. Oracle Vm VirtualBox 搭建 yum 环境
  15. 实验吧 php
  16. MTK 修改默认时区
  17. delphi EncdDecd.pas单元中Encoding方法出现#$D#$A的解决方法
  18. mysqldb mysql_config
  19. MySQL 基础回顾
  20. Struts2学习总结——文件上传与下载

热门文章

  1. 多数据源动态关联报表的制作(birt为例)
  2. 使用wifi连接eclipse进行android程序调试
  3. flume-ng tmp
  4. nginx 查看接口请求时间 每个请求图片的时间或者文件的
  5. vue2 本地安装
  6. kafka的并行度与JStorm性能优化
  7. 百度地图API简介
  8. StarUML破解教程
  9. 高次同余方程模板BabyStep-GiantStep
  10. LINQ分页工具