引用对象';javascript中的用户自己的属性

引用对象';javascript中的用户自己的属性,javascript,Javascript,我是javascript新手,很多方面似乎都不太直观。如果我定义了: var A = function() { return { d:"property-of-object-returned-by-constructor", method:function() { d = "Not my property"; } } } myObj = new A(); 在myObj.method()中引用属性d的唯一方

我是javascript新手,很多方面似乎都不太直观。如果我定义了:

var A = function() {
    return {
        d:"property-of-object-returned-by-constructor",
        method:function() {
            d = "Not my property";
        }
    }
}

myObj = new A();
在myObj.method()中引用属性d的唯一方法是使用这个.d,对吗

例如,我是否正确地认为myObj.method()不会更改属性d,但实际上创建了一个与myObj.d完全无关的全局变量d


我相信这就是我在代码中看到的,但“这”将是引用自己属性的唯一方式,而不是直接引用它们,这是违反直觉的。所以也许我误解了什么。

是的,如果你省略了“this”,d将被定义为一个全局变量

如果您想要一个只能从对象方法内部访问的变量,则必须在其上附加“var”:

var d = "string";
如果要在将其用作类来创建新对象后引用它,则必须将其作为字符串返回:

var d = "string;
return d
或者作为嵌套对象,就像您首先实例化类一样:

var d="string";
return {'val':d}

你可以从你的内部函数返回对象映射?@eskimomatt这听起来像个主意,但就像他说的,初学者,所以我想这并不能帮助他理解范围的复杂性。@Daniel是的,这是关于“this”的一个很好的参考,但我不是问“this”是否指属性,而是当我省略“this”时会发生什么是的,非常抱歉!所以在理论上,如果“this”是ommited,那么,“d”是一个全局变量,所以除了使用“this”之外,没有一种方法可以在对象自己的方法中引用对象自己的属性?如果我有属性x,y要添加到属性z中,我需要写出这个。z=this.x+this.y?如果它在那个函数中,你可以使用一个局部变量-var x=10;变量y=20;等但为了减少冲突,我会使用“this”