什么时候?运行正在运行在浏览器中这
将被记录为窗口
。这是因为窗口
是web浏览器作用域中的全局变量。
现在,如果我们通过添加语句在严格模式下运行它“使用严格”;
到函数声明的开头,这
将不再引用环境环境。这样做是为了避免混淆这个严格模式。这
在这种情况下会记录未定义
,因为这就是它的本质,所以它没有定义。
- 使用调用函数
新的
关键字将立即初始化初始化一个对象
类型为个人
.
- 这个的构造函数
对象
将其构造函数设置为个人
此外,请注意awal类型
会回来的对象
只有。
- 这个新的
对象
将分配给原型原型属于人员.原型
。这意味着个人
原型将可用于的所有实例个人
,包括阿瓦尔
.
- 功能
个人
自身现在被调用;这
是对新构建对象的引用阿瓦尔
.
很漂亮正前方直截了当的啊?
请注意,官方ECMAScript规范没有在哪里无处说明此类功能是实际的建造师
功能。它们只是正常的功能,并且新的
可用于任何函数。只是我们这样使用它们,所以我们只把它们称为这样。
所以是的,因为功能
s也是物体
(实际上是Javascript中的第一类变量),即使函数也有方法。。。嗯,功能他们自己他们自己.
这是使用呼叫
。它基本上取第一个参数并设置这
在函数中foo公司
作为参考这个Arg
。传递给的所有其他参数呼叫
是是传递给函数foo公司
作为参数。
因此上述代码将记录{myObj:“很酷”},[1,2,3]
在控制台中。很好的改变价值的方式这
在任何功能中。
有时,你不喜欢这样的事实这
范围变更,特别地尤其地嵌套范围。看看下面的例子。
在上面的代码中,我们看到这
已更改为这个嵌套范围,但我们需要这
从原来的范围。所以我们“复制”了这
到那个
并使用副本而不是这
。聪明,嗯?