2010-12-23 36 views
1

嗨所以我發現,通常要包括部分或全部在我的js項目如下:標準JavaScript調整

  • Crockford的的Object.create
  • Array.prototype.indexOf
  • 陣列.prototype.remove
  • 克羅克福德的json2.js

看到完整的示例文件@https://gist.github.com/752895

所以問題(S)....我錯過了什麼?有沒有更好的方法來實現這一目標?

(我也使用jquery,它已經解決其中的一些問題?)

+0

**焦點話題**:你也可以看看Crockford在[他的github頁面](https://github.com/douglascrockford/JSON-js)上提供的非'eval`版本的JSON2。 (有兩個,一個是狀態機,另一個是遞歸下降分析器。)基本的json2.js仍然使用`eval`,儘管它首先採取了預防措施,這在理論上意味着它仍然可以被擊敗。 – 2010-12-23 12:40:57

+0

謝謝我會看看:) – zack 2010-12-23 12:59:14

+0

順便說一句:爲什麼不使用crockford的Object.create是因爲:http://stackoverflow.com/questions/3075308/what-modernizer-scripts-exist-for-the-new- ecmascript-5-函數 – zack 2010-12-23 14:41:25

回答

1

jQuery有幾個功能,如$.inArray(),其工作方式Array.prototype.indexOf()$.parseJSON(),其工作方式JSON.parse()但它沒有用於對JSON進行字符串化或從數組中移除元素的等價物(據我所知)。如果可用,jQuery將映射到本地方法。

您可能想查看Kris Kowal's ECMAScript 5 shim並查看在現代瀏覽器中是否有其他可能需要的方法。這爲您提供了兩全其美的解決方案 - 在舊版瀏覽器中兼容並在新版本中實現更佳性能。

1

有沒有更好的方式來實現這一目標?

不是。 jQuery故意放手的東西,如Array.prototype,因此你必須在沒有它們的瀏覽器上添加自己的indexOfremove。實際上,其中大部分將由瀏覽器直接支持,因爲它們將引擎升級到ECMAScript第5版;在那之前,我們必須自己升級目前的設置。只要確保你的腳本是乾淨的,將它與你的應用程序中的其他腳本結合起來作爲構建過程的一部分(這樣你就沒有太多不同的源文件),然後去鎮上。 (編輯:對不起,你顯然已經是已瞭解後一點,因爲你已經摺疊json2.js到腳本。)

+0

這是爲什麼?在框架中擁有所有這些功能不是很方便嗎? – sjngm 2010-12-23 12:38:07

0

您可能會覺得值得您學習使用模塊加載器,例如RequireJS。這會讓你更容易管理你的依賴關係。有一些basic instructions available,如果你想看看它。

作爲一個額外的好處,加載器使您可以通過Google編譯器縮減您的代碼。加載器使用的the module pattern也相當漂亮。