您现在的位置是:首页 > Web设计

Web设计

Js中的this是什么?

2020-11-08 15:32:35 Web设计 admin
this是什么?JavaScript中最令人困惑的机制之一就是this关键字。它是一个在每个函数作用域中自动定义的特殊标识符关键字,但即便是一些老练的JavaScript开发者也对它到底指向什么感到困扰。任何足够先进的技术都跟魔法没有区别。

this是什么?


JavaScript中最令人困惑的机制之一就是this关键字。它是一个在每个函数作用域中自动定义的特殊标识符关键字,但即便是一些老练的JavaScript开发者也对它到底指向什么感到困扰。

任何足够先进的技术都跟魔法没有区别。--ArthurC.Clarke
JavaScript的this机制实际上没有那么先进,但是开发者们总是在大脑中插入“复杂”和“混乱”来解释这句话,毫无疑问,如果没有清晰的理解,在你的困惑中this可能看起来就是彻头彻尾的魔法。

注意:“this”这个词是在一般的论述中极常用的代词。所以,特别是在口头论述中,很难确定我们是在将“this”作为一个代词使用,还是在将它作为一个实际的关键字标识符使用。为了表意清晰,我会总是使用this来代表特殊的关键字,而在其他情况下使用“this”或this或this。

为什么要用this?

如果对于那些老练的JavaScript开发者来说this机制都是如此的令人费解,那么有人会问为什么这种机制会有用?它带来的麻烦不是比好处多吗?在讲解如何有用之前,我们应当先来看看为什么有用。

让我们试着展示一下this的动机和用途:
functionidentify(){
returnthis.name.toUpperCase();
}

functionspeak(){
vargreeting="Hello,I'm"+identify.call(this);
console.log(greeting);
}

varme={
name:"Kyle"
};

varyou={
name:"Reader"
};

identify.call(me);//KYLE
identify.call(you);//READER

speak.call(me);//Hello,I'mKYLE
speak.call(you);//Hello,I'mREADER