2015-05-19 29 views
1

我是JavaScript新手,很多方面看起來並不直觀。我在理解是正確的,如果我定義:在javascript中引用對象自己的屬性

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

myObj = new A(); 

我是正確的唯一途徑是指財產d內myObj.method(的)是使用this.d?

例如,我是否正確,因爲它站立myObj.method()不改變屬性d,但實際上創建一個全局變量d是完全無關myObj.d?

我相信這是我在我的代碼中看到的,但直觀地反駁「this」是引用自己的屬性的唯一方法,而不是直接引用它們。所以也許我誤解了一些東西。

+1

http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work –

+0

你可以只返回,並從對象映射你內部的功能? – eskimomatt

+1

@eskimomatt聽起來像一個想法,但正如他所說,_beginner_,所以我想這並不能幫助他理解範圍的複雜性。 – somethinghere

回答

2

是的,d將被定義爲,如果你省略了全局變量「這個」

,如果你想要一個變量從對象中只有入店methos你就必須「變種」追加到它:

var d = "string"; 

,如果你想引用它你會用它作爲後一個類來創建一個新的對象,那麼你要麼必須把它作爲字符串返回:

var d = "string; 
return d 

或anothe嵌套obeject像你instanciating類的firstplace:

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

所以沒有辦法在對象自己的方法中引用對象自己的屬性,除了使用「this」?如果我有屬性x,y添加並放入屬性z我需要寫出this.z = this.x + this.y? –

+0

如果它在該函數內,則可以使用局部變量var-var x = 10; var y = 20;等等。但爲了保持衝突,我會用'this' – eskimomatt