AvalonJS 是一個基于MVVM(Model-View-ViewModel)模式的 JavaScript 框架,提供了許多方便快捷的功能,其中之一就是 Avalon Json。
Avalon.mix({ "$parsed": {}, parseJSON: function (str) { try { if (this.$parsed[str]) return this.$parsed[str]; if (!avalon.contains(document, this.root)) return JSON.parse(str); var obj = JSON.parse(str); this.$parsed[str] = obj; return obj; } catch (e) { avalon.log('parseJSON出錯,請看下面的語法是否正確\n', str, '\n', e); return {}; } } })
上述代碼是 Avalon Json 的解析代碼,其主要作用是將 json 格式的字符串轉(zhuǎn)換成 JavaScript 對象。在此之前,代碼先會檢查該 json 字符串是否已經(jīng)被解析過,如果已經(jīng)解析過,則直接返回緩存的JavaScript對象;如果沒有解析過,則對其進行解析,并將解析結(jié)果緩存。
在實際應(yīng)用中,Avalon Json 通常與 Avalon 的 $watch 方法一起使用。$watch 方法會監(jiān)聽一個對象的屬性變化,當(dāng)該對象的指定屬性變化時,$watch 方法會自動執(zhí)行指定的函數(shù)。通過結(jié)合這兩個功能,我們可以實現(xiàn)代碼中的雙向數(shù)據(jù)綁定,從而輕松實現(xiàn)復(fù)雜的數(shù)據(jù)交互、動態(tài)UI更新等的需求。