出于测试目的,我试图将“窗口”绑定到功能类,并且出现
function Dog() {} // OK, no problems here
function Dog() {}.bind(window) // Unexpected token .
(function Dog() {}).bind(window) // OK, no problems here
new Dog() // ReferenceError: Dog is not defined
谁能解释为什么函数类没有全局声明? 括号是什么?在另一个范围内吗?
谢谢
答案 0 :(得分:1)
绑定到window
不会更改window
。它甚至都没有改变Dog
。 bind
仅带给您一个功能,其功能类似于Dog
,但其中this
与window
是同一对象。 (请注意,它返回绑定的函数。如果您对返回的函数不做任何事情,它将被丢弃,并且根本看不到任何效果。)
如果要全局声明函数,可以说window.Dog = function() { ... }
。
答案 1 :(得分:0)
@chao谢谢你。
我犯了一个错误
我在混淆类和函数的定义。
换句话说,如果我们创建一个新实例,则该实例将链接到该实例。但是,如果我们调用该函数,而不是创建实例,那么它将由于绑定而修改窗口。