我注意到,似乎没有明确解释this关键字是什么以及如何在Stack Overflow站点上的JavaScript中正确(和错误地)使用它.
我亲眼目睹了一些非常奇怪的行为,并且无法理解为什么会发生这种行为.
this工作如何以及何时使用?
好的,这是情况:
var vowels = ['a', 'i', 'y', 'e', 'o', 'u'];
String.prototype.isVowel = function () {
return vowels.indexOf(this) !== -1;
};
alert('a'.isVowel());
Run Code Online (Sandbox Code Playgroud)
它会提醒"假",因为this引用不是'a'它的原型.为了使它工作,我们需要做一点改变.
String.prototype.isVowel = function () {
return vowels.indexOf(this[0]) !== -1;
};
alert('a'.isVowel());
Run Code Online (Sandbox Code Playgroud)
这将起作用,因为String.prototype包含原始字符串的所有字符.实际上这是一个黑客,我不喜欢它.
但是,我们需要做些什么来使这个代码工作?
Number.prototype.is5 = function () { return this === 5; }
alert((5).is5()); //will alert 'false'
Run Code Online (Sandbox Code Playgroud)
或者我们只是不需要触摸原型?