Javascript [this] keyword binding with new
在阅读你不知道JS的书时:这个& 对象原型
我找到了关于
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function foo(something) { this.a = something; } var obj1 = { foo: foo }; var obj2 = {}; obj1.foo( 2 ); console.log( obj1.a ); // 2 obj1.foo.call( obj2, 3 ); console.log( obj2.a ); // 3 var bar = new obj1.foo( 4 ); console.log( obj1.a ); // 2 console.log( bar.a ); // 4 |
我不明白为什么在执行新的obj1.foo(4)
当你调用这个
And if I comment the line : obj1.foo(2) the result of the log above is
undefined.
这是因为如果你评论你提到的那一行。
1 | obj.a |
您在对象
1 | obj.a = 4; |
你做两件事,你定义属性
因为任何函数都可以是构造函数。想象一下,如果你自己使用
1 | var obj3 = new foo(3); |
你期望得到一个类似
即使该功能附加到其他内容,这仍然有效。每次使用
在第一个实例中,您将该函数用作方法:
1 | obj1.foo(2); |
在这种情况下,上下文设置为
所以,让我们把它分解成更小的步骤。
首先,
所以当你调用
由于这是将值赋给