看板 Ajax 關於我們 聯絡資訊
※ 引述《btsken (郝小明)》之銘言: : 是這樣的,我不太會描述這個問題.... : 就直接用例子說明好了XD : 假設我在有一個物件Man : function Man(name) { : this.name = name; : } : Man.prototype.walk = function() { : console.log("walk"); : } : 我將物件轉成json : var json = JSON.stringify(new Man("tom")); : 然後再轉回來 : var man = JSON.parse(json); : 我想問的是,從json轉回來的物件有辦法保有prototype的方法嗎 : 小弟觀念沒有很好,先謝謝各位了~ 同推文所說,JSON 是一種儲存資料的格式,你的 walk 函式根本上就無法以 JSON 儲存。下面是在實例化後再另外讀取 JSON 的做法 function Man(name){ this.name = name; } Man.prototype = { walk: function(){ console.log(this.name + " walk"); }, saveToJSON: function(){ return JSON.stringify(this); }, loadFromJSON: function(json){ var o = JSON.parse(json); for (key in o) { this[key] = o[key]; } } }; var man = new Man("Tom"); man.walk(); // Tom walk var man2 = new Man(); man2.loadFromJSON(man.saveToJSON()); man2.walk(); // Tom walk -- (* ̄▽ ̄)/‧★*"`'*-.,_,.-*'`"*-.,_☆,.-*` http://i.imgur.com/oAd97.png
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.246.194 ※ 文章網址: http://www.ptt.cc/bbs/Ajax/M.1408296526.A.3DD.html
s25g5d4: 使用 for in loop 永遠記得檢查 hasOwnProperty 08/18 02:38
eight0: 這個情況下除非動到原生 Object,否則不用檢查。不過確實 08/18 12:30
eight0: 應該在讀取 JSON 時濾掉不合的值 08/18 12:30