我是JS初学者。 我正在通过代码来了解Javascript中此关键字的用法。 但我不理解流程以及输出是如何产生的。
<html>
<body>
<script>
function WhatIsThis() {
return this;
}
function Something() {
this.whatIsThis = WhatIsThis;
this.toString = function () { return "[Something]" };
}
var o = new Something();
document.writeln("o.whatIsThis() = " +
o.whatIsThis());
document.writeln("<br />");
document.writeln("WhatIsThis() = " +
WhatIsThis());
document.writeln("<br />");
document.writeln("WhatIsThis.call(314) = " +
WhatIsThis.call(314));
</script>
</body>
</html>
虽然我调试了它,但无法理解。 请帮助。
输出:
o.whatIsThis() = [Something] //how it came?
WhatIsThis() = [object Window]
WhatIsThis.call(314) = 314
答案 0 :(得分:0)
对于直接调用的def getbook():
bookname = input("What is the name of the text file?")
bookFile = open(bookname, 'r')
bookString = bookFile.read()
lowerBook = bookString.lower()
wordList = lowerBook.split()
return wordList
import string
def listAllThe(longString):
theList = set()
for i in longString:
if i.startswith('the'):
theList.add(i)
return theList
def final():
book = getbook()
getList = listAllThe(book)
print (getList)
final()
函数,WhatIsThis()
在这种情况下是this
。虽然您对该对象window
进行了o.whatIsThis()
。
this
它将其显示为字符串的o.whatIsThis() -> return this (for "o") -> "[Something]"
方法,其中显示toString()
。
答案 1 :(得分:-2)
在第一次调用中,调用的是o.WhatIsThis()
。
o
是Something()的函数产品。因此,当您致电o
时,您在技术上正在调用Something()
的实例。
o.WhatIsThis()
被调用,
this.WhatIsThis =返回this
[见WhatIsThis()]
然后this.toString =
将this
变为this.to String = "[Something]"
所以你的回复o.whatIsThis() = [Something]
。
Second
直接调用WhatIsThis()
,因此返回浏览器窗口对象。您可以尝试向控制台说this
,它将返回window object
。
Third
WhatIsThis.call(314),一个争论被传递,但没有定义争论列表,因此,这实际上成为你提供该功能的争论。
就像,魔杖服从拥有它的巫师。 314
拥有它。
因此this
会返回314
。