JavaScript改变this指向的3种方法(代码说明)

我们用例子来说明问题

隐式转换

var id = 10;
function a() {
  console.log(this.id);
};
var obj2 = {
    id: 30
}
var obj1 = {
    id: 20
}
a.call(obj2);//30
a.call(obj1);//20
//a函数内的this指向随着call的指向而变化

显示转换

var id = 10;
function a() {
  console.log(this.id);
};
var obj2 = {
    id: 30
}
var obj1 = {
    id: 20
}

//使用bind之后, 返回的函数内部this定死, 无法再改变this
var b = a.bind(obj2);//返回一个函数
b.call(obj1);//30
b();//30

new

function a() {
    this.a = 1;
    this.b = 2;
}

var a1 = new a();
//this指向对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,891评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,760评论 18 399
  • 值类型转换将值从一种类型转换为另一种类型通常称为类型转换,这是显示的情况;隐式的情况称为强制类型转换。JavaSc...
    xpwei阅读 3,602评论 0 5
  • Scala中的implicit关键字对于我们初学者像是一个谜一样的存在,一边惊讶于代码的简洁,一边像在迷宫里打转一...
    大刀阅读 18,570评论 10 18
  • 01 4月27日出差湖北一个小县城,晚上9点,打车回酒店。拦了半天车拦不到,于是打开滴滴叫了辆出租车,上车后朋友发...
    第101封信阅读 396评论 0 1