摘要:項目需要,簡單的提了個思路,將對象轉換為顯示聲明形式的字符串例如對象聲明可以采用形式,所以,采用此格式存儲對象,可以用方法,直接轉換為對象。未處理字符轉意,對象屬性可能包含與描述沖突的字符如等。
隨著更多語言的支持 json 作為數據傳輸和存儲的媒體,已經非常成熟且應用廣泛。
卻存在致命硬傷,不攜帶 對象方法 。在數據傳輸和存儲中,這是恰當的和合理的。
但是在更多的應用場景中,又是無奈的。
項目需要,簡單的提了個思路,將對象轉換為顯示聲明形式的字符串
例如:
var person = { name:"joe", age:40, send:function(){ console.log("hello world") } }
對象聲明可以采用{...}形式,所以,采用此格式存儲對象,可以用eval()方法,直接轉換為對象。
簡單寫了一個,大概思路如此:
function o2s(o){ var r = [] for(p in o){ if(typeof o[p] == "string"){ r.push((Array.isArray(o)?""": p + ":"") + o[p] + """) }else if(typeof o[p] == "object"){ r.push((Array.isArray(o)?"":p + ":" )+ o2s(o[p])) }else{ r.push((Array.isArray(o)?"":p + ":") + o[p] ) } } r = r.join(",") if(Array.isArray(o)){ return "[" + r + "]" }else if(typeof o == "object"){ return "{" + r + "}" }else{ return r } }
捎帶一句,稍微修改即可深拷貝
存在幾個問題,
1.無法處理循環引用的對象,也就是自己包含自己,或者包含了包含自己的對象的時候。
2.未處理字符轉意,對象屬性可能包含與描述沖突的字符如“”等。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99799.html
摘要:類似的情況還有,方法和方法等。今天我說一個最簡單。代碼如下和也可以實現,但是生成的是一個整數,如下分割線其它類型數據轉布爾數據下面的轉換,大家一看就明白了,不多說。緩存變量循環緩存分割線第一段就是每一次循環的時候,都要查詢一次。 1.前言 從大學到現在,接觸前端已經有幾年了,感想方面,就是對于程序員而言,想要提高自己的技術水平和編寫易于閱讀和維護的代碼,我覺得不能每天都是平庸的寫代碼,...
摘要:舉個例子來說明一下什么是淺拷貝什么是深拷貝淺拷貝得出的結果可以看出是淺拷貝非對象的屬性值一個改變不影響另一個的值對象屬性是引用賦值所以一個改變會影響另一個的改變出現這種情況的本質是對象是按引用賦值的深拷貝指的是拷貝一個對象,改變一個值不影響 舉個例子來說明一下什么是淺拷貝什么是深拷貝 淺拷貝 var x = { a: 1, b: {f: { g: 1 ...
閱讀 2307·2023-04-25 14:17
閱讀 1515·2021-11-23 10:02
閱讀 2170·2021-11-23 09:51
閱讀 873·2021-10-14 09:49
閱讀 3384·2021-10-11 10:57
閱讀 2921·2021-09-24 09:47
閱讀 3046·2021-08-24 10:00
閱讀 2298·2019-08-29 18:46