作业括号

时间:2018-07-05 14:24:19

标签: javascript frontend variable-assignment parentheses

出于测试目的,我试图将“窗口”绑定到功能类,并且出现

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

谁能解释为什么函数类没有全局声明? 括号是什么?在另一个范围内吗?

谢谢

2 个答案:

答案 0 :(得分:1)

绑定到window不会更改window。它甚至都没有改变Dogbind仅带给您一个功能,其功能类似于Dog,但其中thiswindow是同一对象。 (请注意,它返回绑定的函数。如果您对返回的函数不做任何事情,它将被丢弃,并且根本看不到任何效果。)

如果要全局声明函数,可以说window.Dog = function() { ... }

答案 1 :(得分:0)

@chao谢谢你。

我犯了一个错误

我在混淆类和函数的定义。

换句话说,如果我们创建一个新实例,则该实例将链接到该实例。但是,如果我们调用该函数,而不是创建实例,那么它将由于绑定而修改窗口。