语法
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