Javascript JS通过construcator的函数调用向对象添加属性

Javascript JS通过construcator的函数调用向对象添加属性,javascript,javascript-objects,Javascript,Javascript Objects,我不明白为什么会出现以下代码: 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 在执行以下代码时,不会为obj2创建“b”属性: f

我不明白为什么会出现以下代码:

 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
在执行以下代码时,不会为obj2创建“b”属性:

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新手,我试着阅读有关使用函数作为构造函数的内容,基本上我有了这个想法,但我想我仍然缺少一些东西。
非常感谢。 诺姆

它的值由函数的调用方式决定

如果没有调用者,则
将指向默认/全局范围(窗口)

如果需要将上下文传递给另一个函数,则应使用以下选项之一:
.apply
.bind

样品
函数Foo(){
这一点。a=“a”;
this.c=添加.应用(this);
}
var add=函数(){
此.b=“已添加”;
}
obj2=新的Foo();

log(“obj2.b是”+obj2.b)//obj2.b未定义
此的值根据调用函数的方式设置。如果将函数作为对象的属性调用,则函数中的此将成为对象。@Downvoter,请查找更新,如果缺少或不正确,请指出。找到了。谢谢:)