2013-11-28 25 views
-1

我正試圖在這裏使用一些對象,並希望它有一個簡單的讀/寫功能。函數來更改object.object屬性

我的對象將包含更多的對象,所以問題在於訪問子對象屬性。我可以很簡單地閱讀它,但是當我嘗試更改屬性值時,我只更改函數varible target,因此它不再指向該對象。

var OBJ = { 
    name:"", 
    obj2: 
    { 
     name:"Test", 
     something:"text" 
    } 
}; 

function readFromObject(target){ 
    console.log(target); 
} 

function writeToObject(target,val){ 
    target = val; 
    // More code 
} 
readFromObject(OBJ.obj2.name); 
writeToObject(OBJ.obj2.name,"newVal"); 
readFromObject(OBJ.obj2.name); 

希望有人得到我想要做的。

+0

'OBJ.obj2.name = 「的newval」;'? –

+0

執行'writeToObject(OBJ.obj2.name,「newVal」);'而不是'OBJ.obj2.name =「newVal」'的興趣是什麼?當你給出'OBJ.obj2.name'作爲參數時,你只給出名字段的字符串值。只有價值,而不是參考。 – OlivierH

+0

你想達到的目標對我來說沒有意義。你爲什麼想要輸入更多? – nullpotent

回答

2

看起來你只是想製作一個通用的setter和一個通用的getter。

你可以這樣說:

function readFromObject(obj, property) { 
    console.log(obj[property]); 
} 

function writeToObject(obj, property, value) { 
    obj[property] = value; 
    // More code 
} 

readFromObject(OBJ.obj2, 'name'); 
writeToObject(OBJ.obj2, 'name', 'newVal'); 
readFromObject(OBJ.obj2, 'name'); 
+0

用這個代替'OBJ.obj2 ['name'] ='newVal'是沒有意義的;' –

+0

它確實有意義。這就像一個簡單的制定者。有時你想在每次更改對象中的某個值時執行一些代碼。只需用你想要的替換'//更多的代碼'。 – Magus

+0

好吧,我現在明白了,但OPs問題仍然很糟糕。 –