1. 程式人生 > 其它 >JavaScript – Object, Prototype, Function, Class

JavaScript – Object, Prototype, Function, Class

介紹

es3 年代, 寫 JavaScript 很少會想宣告 class 的. 一方是需求沒有那麼複雜, 另一方面是 JS 可以直接操作 Object, 已經足夠用了. 

es5 以後, 開始會想寫 class 了, 但是 JS 的語法特性並沒有像 C# 那樣的 class 概念. 但是它的 function 又帶有 class 的特性. 結合 prototype 可以完全實現 class 需要的東西.

es6 以後, class 被引入, 但其實它只是語法糖, 底層依然是利用了 function 和 prototype 原理實現了 class.

所以得出結論

JS 的 object 比 C# 的 object 靈活.

JS 的 function 帶有 C# class 的特性 (比如可以 new 返回例項)

JS 的 prototype 可以實現 C# class 的繼承

雖然在 es6, TypeScript 的幫助下, 我們可以像寫 C# 那樣去寫 JS 的 class, 但是這樣就沒有學到語言的精髓了.

我的經驗是,

如果你會 C# 5.0 那麼你學 es6 以上 和 TypeScript 會有幫助.

如果你會 es5 那麼你學 C# 6.0 以上會有幫助.

這幾年, 它倆兒一直在互補中.