JS:Function对象call、apply、bind改变this指向
  TEZNKK3IfmPf 2023年11月15日 20 0

语法

Function.length // 返回形参个数
Function.name //  返回函数实例的名称

Function.prototype.call(thisArg, arg1, arg2, ...)

Function.prototype.apply(thisArg, [arg1, arg2, ...]) // 调用给定this值的函数

Function.prototype.bind(thisArg[, arg1[, arg2[, ...]]]) // 创建一个新的函数

1、对象中的this

var name = 'Tom';

let obj = {
  name: this.name,
};

console.log(obj);

// Chrome
// {name: "Tom"}

// Node.js
// { name: undefined }

2、函数中的this

let tom = {
  name: 'Tom',

  sayHello() {
    //   this 默认指向了tom 对象
    console.log(`name is `);
  }
};

let jack = {
  name: 'Jack',
};

tom.sayHello();
// name is Tom


// 改变 this指向

tom.sayHello.call(jack);
// name is Jack

tom.sayHello.apply(jack);
// name is Jack

// 注意bind之后需要再次调用执行
tom.sayHello.bind(jack)();
// name is Jack


参考
javascript中call()、apply()、bind()的用法终于理解https://www.ctyun.cn/portal/link.html?target=https%3A%2F%2Fdeveloper.mozilla.org%2Fzh-CN%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FFunction/call




【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
TEZNKK3IfmPf