2017-08-08 63 views
0

根據我的研究,我決定對我的全局變量使用getter/setter(請糾正我,如果我錯了)。我可以設置並獲取私有變量,但是如何編輯對象中屬性的值?如何使用setter設置/編輯對象的屬性

因爲我不再可以使用obj.id = "33",我試過obj.id.set("33")這是沒有意義的。如何編輯對象中的值?

var x = {"id":"93","customId":"a1a8d3c5af2d4807879e5fc6721d65ad","accountNumber":null}; 
 

 
var obj = (function() { 
 
\t var holder = ""; 
 
\t return { 
 
\t \t get: function() { 
 
\t \t \t return holder; 
 
\t \t }, 
 
\t \t set: function(val) { 
 
\t \t \t holder = val; 
 
\t \t } 
 
\t }; 
 
})(); 
 
console.log("before setting: ", obj.get()); 
 
obj.set(x); 
 
console.log("after setting" ,obj.get()); 
 
//obj.id = "33"; 
 
// or 
 
// obj.id.set("33"); 
 
//console.log("new id: ", obj.get());

回答

1

試試這個,你必須得到該對象改變其值之前:

obj.get().id = 33; 
+0

有道理。但是安全嗎?它可以從第三方工具或黑客進行編輯嗎? –

+0

這裏的安全取決於訪問權限,你會提供給'obj'。閱讀本文以獲取有關訪問修改的信息。 https://stackoverflow.com/questions/1958216/how-do-i-mimic-access-modifiers-in-javascript-with-the-prototype-library –