JavaScript 中的 this 綁定規(guī)則,含綜合實(shí)例

1.new 綁定(優(yōu)先級(jí)最高)
javascript
new Foo()

2.顯式綁定
foo.call(obj)
foo.apply(obj)
foo.bind(obj)()

3.隱式綁定
obj.foo()

4.默認(rèn)綁定(優(yōu)先級(jí)最低)
foo()

綜合示例

function identify() {
  return this.name.toUpperCase();
}

const me = { name: 'Kyle' };
const you = { name: 'Reader' };

// 隱式綁定
console.log(identify.call(me)); // KYLE
console.log(identify.call(you)); // READER

// new 綁定
function Person(name) {
  this.name = name;
}
Person.prototype.identify = identify;

const kyle = new Person('Kyle');
console.log(kyle.identify()); // KYLE

// 顯式綁定 vs 隱式綁定
function foo() {
  console.log(this.a);
}

const obj1 = { a: 2, foo };
const obj2 = { a: 3, foo };

obj1.foo(); // 2 (隱式)
obj2.foo(); // 3 (隱式)

obj1.foo.call(obj2); // 3 (顯式 > 隱式)
obj2.foo.call(obj1); // 2 (顯式 > 隱式)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容