我无法弄清楚以下代码的原因:
function Foo() {
this.a = "a";
this.c = add();
}
var add = function() {
this.b = "added";
}
obj2 = new Foo();
alert("obj2.b is " + obj2.b); //obj2.b is Undefined
不会创造' b'属性为obj2,而此代码:
function Foo() {
this.a = "a";
this.func1 = add;
this.c = this.func1();
}
var add = function() {
this.b = "added";
}
obj2 = new Foo();
alert("obj2.b is " + obj2.b); // obj2.b is added
将创建' b'属性。
我是JS的新手,我尝试阅读使用函数作为构造函数,基本上我得到了这个想法,但我想还有一些我不知道的东西。
谢谢,
诺姆
答案 0 :(得分:3)
这个值取决于函数的调用方式。
如果没有调用者,则this
将指向默认/全局范围(窗口)。
如果您需要将上下文传递给其他函数,则应使用以下方法之一:.apply
,.bind
function Foo() {
this.a = "a";
this.c = add.apply(this);
}
var add = function() {
this.b = "added";
}
obj2 = new Foo();
console.log("obj2.b is " + obj2.b); //obj2.b is Undefined