js的四种调用方式:

一 作为函数的调用:

在严格模式下this,undefined,在非严格模式下指向全局window对象。

二 作为方法调用:

this通常指向调用的对象

三 作为构造函数的调用:

this指向新创建的对象

四 通过call,apply调用:

this指向call或者apply的第一个参数

箭头函数没有单独的this

所有函数均可使用bind方法,创建函数,并且绑定到bind方法传入的参数上,被绑定的函数与原始函数具有一致的行为。

    let obj1 = {
whoAMi: function() {
return this;
}
}
let obj2 = {
whoAMi: obj1.whoAMi
}
let iden = obj2.whoAMi; console.log(obj1.whoAMi());//obj1
console.log(obj2.whoAMi());//obj2
iden();//windows,方法调用,(strict undefined)
obj1.whoAMi.call(obj2);//obj2 function Fn() {
this.whoAMi = () => {this;}
}
let obj1 = new Fn();
let obj2 = {
whoAMi: obj1.whoAMi
} obj1.whoAMi();//obj1
obj2.whoAMi();//obj1,由于obj1是构造函数,this代表调用者 function Fn() {
this.whoAMi = function() {
return this;
}.bind(this);
} let obj1 = new Fn();
let obj2 = {
whoAMi: obj1.whoAmi
}; obj1.whoAmi();//obj1
obj2.whoAMi();//obj1

最新文章

  1. tp5 中 model 的删除方法
  2. UE4蓝图编程的第一步
  3. extjs简单动画2
  4. springmvc自定义日期编辑器
  5. 20160122.CCPP详解体系(0001天)
  6. TIMAC 学习笔记(二)
  7. 使用Fragment实现类似TabHost标签栏的效果
  8. SQL表连接
  9. spring-boot整合dubbo:Spring-boot-dubbo-starter
  10. 解决wso2 axis2server 跑不起
  11. [UE4]用Blenspace混合空间动画代替AimOffset动画偏移
  12. SpringMVC学习八 @ResponseBody注解
  13. 绝版Node--Sequlize搭建服务(Node全栈之路 二)
  14. dispatch_group_async 使用详解
  15. selenium3 下载、配置
  16. Sublimetext3插件与使用技巧
  17. capacilitys docker中的权限设置 privileged
  18. springmvc-框架学习
  19. 搜索水题四连发_C++
  20. Redis的管理

热门文章

  1. iOS对象方法和类方法的区别与调用方式
  2. CoreData 从入门到精通(六)模型版本和数据迁移
  3. ES API 备忘
  4. 时间处理工具类TimeUtil
  5. [雅礼NOIP集训 2017] number 解题报告 (组合数+二分)
  6. webpack的像素转vw loader插件
  7. mysql导入数据,涉及到时间转换,乱码问题解决
  8. asp.net 汉字转拼音的车祸现场
  9. 脱离node自己使用普通的requirejs管理js资源
  10. SpringCloud学习笔记(8)----Spring Cloud Netflix之负载均衡-Ribbon的负载均衡的策略