var name = "window";
var person1 = {
name: "person1",
show1: function() {
console.log(this.name);
},
show2: () => console.log(this.name),
show3: function() {
return function() {
console.log(this.name);
}
},
show4: function() {
return () => console.log(this.name);
}
};
var person2 = { name: "person2" }; person1.show1(); //person1
person1.show1.call(person2) //person2
person1.show2();//window
person1.show2.call(person2); //window
person1.show3()(); //window
person1.show3().call(person2);//person2
person1.show3.call(person2)();//window
person1.show4()();//person1
person1.show4().call(person2); //person1
person1.show4.call(person2)(); //person2

 以上实例说明es6箭头函数this指向所遵循的三条原则:

  1. this指向函数上一层函数this,若无上一层函数,指向全局window;
  2. 定义函数时所在上下文中的this;
  3. this指向定义时所在的对象,而非使用时所在的对象。

ES6 箭头函数this指向问题的更多相关文章

  1. ES6 箭头函数 this 指向

    ES6 箭头函数 this 指向 箭头函数有几个使用注意点: 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个 ...

  2. es6箭头函数 this 指向问题

    es5中 this 的指向 var factory = function(){ this.a = 'a'; this.b = 'b'; this.c = { a:'a+', b:function(){ ...

  3. ES6 箭头函数this指向

    箭头函数有几个使用注意点. (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. (2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误. (3)不可以使 ...

  4. ES6箭头函数this指向

    普通函数中的this: 1. this总是代表它的直接调用者(js的this是执行上下文), 例如 obj.func ,那么func中的this就是obj 2.在默认情况(非严格模式下,未使用 'us ...

  5. ES6箭头函数与this指向

    一.ES6箭头函数 ES6之前的语法想要定义一个函数,如图example1,ES6之后定义一个函数如图example2,相比较之下简洁了很多 二.函数的this指向 非箭头函数,谁调用函数this指向 ...

  6. es6箭头函数讲解

    es6箭头函数的用法 箭头函数是es6的一种函数的简写方法. 如下: var f = v = > v; //等同于 var f = function(v){ return v; } var su ...

  7. ES6 — 箭头函数

    一 为什么要有箭头函数 我们在日常开发中,可能会需要写类似下面的代码 const Person = { 'name': 'little bear', 'age': 18, 'sayHello': fu ...

  8. js this问题和es6箭头函数this问题

    JS中this的四种用法 1.在一般函数方法中使用 this 指代全局对象 function test(){ this.x = 1; alert(this.x); } test(); //1 2.作为 ...

  9. Vue ES6箭头函数使用总结

    Vue ES6箭头函数使用总结   by:授客 QQ:1033553122   箭头函数 ES6允许使用“箭头”(=>)定义函数: 函数不带参数 定义方法:函数名称 = () => 函数体 ...

随机推荐

  1. [Vue @Component] Pass Vue Render Functions as Props for Powerful Patterns

    Render functions open up a world of customization and control by using pure JavaScript rather than V ...

  2. 【Cloud Foundry】Could Foundry学习(一)——Could Foundry浅谈

    在阅读的过程中有不论什么问题.欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801 Cloud Foundry是VMware推出的业界第一个开源PaaS云平台.他包 ...

  3. J2EE肌肉系统—四层模型

    J2EE是基于JAVA技术的一种标准.为什么会有这种标准呢? 主要是在企业级应用开发其中有一些需求.比如数据库连接,邮件服务.事件处理等,都是一些通用模块. 而这些模块假设由开发者来开发.势必添加开发 ...

  4. Server Tomcat v8.0 Server at localhost failed to start.

    怎么办? 查资料的话别人会告诉你须要删除一个东西.这是一种方法.可是你的错误并不是通过这种方法能够解决. 比方像我 <url-pattern>login</url-pattern&g ...

  5. opencv中RGB转HSV

    cvCvtColor(src,dst,CV_BGR2HSV); 当中,src为三通道的,dst也为三通道的. OPENCV 中 H.S.V.顺序分别为3*x+0  3*x+1   3*x+2 open ...

  6. nodejs初步

    nodejs是啥? 看名字,很容易认为它是一种开发语言,实质上,它更像是一种WEB服务器,一种工具.因为nodejs的作用,在于在服务器端解释.运行javascript.node.js本身不是开发语言 ...

  7. YTU 2720: 删出多余的空格

    2720: 删出多余的空格 时间限制: 1 Sec  内存限制: 128 MB 提交: 338  解决: 201 题目描述 小平在给弟弟检查英语作业时时,发现每个英语句子单词之间的空格个数不等,请你编 ...

  8. 64. Extjs中grid 的ColumnModel 属性配置

    转自:https://blog.csdn.net/u011530389/article/details/45821945 本文导读:Ext.grid.ColumnModel 该类用于定义表格的列模型, ...

  9. compileSdkVersion, minSdkVersion 和 targetSdkVersion的选择(copy)

    英文原文:Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion 作者:Ian Lake,Google Android ...

  10. php验证邮箱是否合法

    下面我来总结了在php邮箱验证的正则表达式以及还可以checkdnsrr函数来验证你输入的邮箱是否是有效的哦,这样可以更好的过滤到无效邮箱地址哦.     域名由各国文字的特定字符集.英文字母.数字及 ...