VS2012 JavaScript IntelliSense會忽略底線起首的屬性

我寫了一個CRUD輔助程式庫,內建自動抓取ViewModel進行JSON序列化的功能,其中有條"序列化時排除ViewModel中名稱為底線開頭屬性"的慣例(Convension)。前陣子接到同事回報,配合此慣例宣告ViewModel,卻發現底線起首的屬性會被Visual Studio 2012的JavaScript IntelliSense無視。

寫一小段程式,馬上獲得驗證:

一直沒留意VS2012的JS IntelliSense有此特性,查詢MSDN文件後獲得證實(在Handling IntelliSense events小節)。原來這是JS Intellisense強大擴充能力的一環,過濾底線開頭屬性的程式被放在VS2012的安裝目錄JavaScript\References\underscorefilter.js。

既然過濾行為由underscorefilter.js控制,要修改並非難事。不過,屬性名稱以底線開頭在JavaScript慣例隱含"私有"、"限內部使用"的意義,不應開放外界呼叫,因此不列在自動完成清單十分合理! 不想打破這個立意良好的設計,最後決定調整程式庫慣例,改成"序列化時排除名稱為$開頭屬性"!

案外案: 約定以$為屬性字首慣例,在C#端再踢到小石頭一顆: .NET識別名稱命名規則只允許字母或底線當字首,無法在C#中使用$作為屬性名稱字首與JavaScript端對應。最後的解決做法是在C#命名為"priv_",JSON序列化送到JavaScript端後再將"priv_Boo"改成"$Boo"。

歡迎推文分享:
Published 07 September 2013 11:06 PM 由 Jeffrey
Filed under: ,
Views: 5,671



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<September 2013>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication