在JavaScript的早期版本中,将receiver(又名context)默认为全局对象背后的基本原理是什么?
function a() {
console.log(this); // window
}
Run Code Online (Sandbox Code Playgroud)
Brendan Eich 回答道:
因此,顶级函数(第一个版本中唯一的函数)可以充当窗口或框架(后来的iframe)方法.仍在使用.
JS术语:"接收器"是影响JS的语言中的标准OO术语,而不是高度重载的"上下文".
问题提交给Brendan Eich:
所以ES1没有方法?(参见你对顶级fns的评论)
Brendan Eich:
不,JS9在'95(之后没有"ES")通过函数值属性获得方法,但所有函数都是顶级的.ES1标准化.
'99中的ES3添加了函数表达式和嵌套函数(闭包),我在那10天没有时间实现.
要回到orig q:在窗口w中,函数m(){}使wm()可以从具有
this== w的其他可到达窗口/帧调用.