<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                **這個章節需要大家幫忙補充,一次性想不完那么多** * * * ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#javascript-語言精粹)JavaScript 語言精粹 [http://book.douban.com/subject/3590768/](http://book.douban.com/subject/3590768/) 這本書很薄,只有 155 頁,但該講的幾乎都講了。大家想辦法搞來看看吧(我總不能很沒節操地給個電子版 PDF 鏈接在這里吧)。 js 這門語言,水很淺。沒有太復雜的地方可以鉆,但特么的坑又多。 上面的那本書是一定要看的。這本書專注在講 js 語法,其他 js 的書都過多地涉及了瀏覽器知識。 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#javascript-之美)JavaScript 之美 * 其一:[http://fxck.it/post/72326363595](http://fxck.it/post/72326363595) * 其二:[http://fxck.it/post/73513189448](http://fxck.it/post/73513189448) ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#繼承)繼承 js 前端不懂有什么好辦法,后端的話,很方便。 用 node 官方的?`util`?庫,下面是直接從官網摘抄來的: ~~~ var util = require("util"); var events = require("events"); function MyStream() { events.EventEmitter.call(this); } util.inherits(MyStream, events.EventEmitter); MyStream.prototype.write = function(data) { this.emit("data", data); } var stream = new MyStream(); console.log(stream instanceof events.EventEmitter); // true console.log(MyStream.super_ === events.EventEmitter); // true stream.on("data", function(data) { console.log('Received data: "' + data + '"'); }) stream.write("It works!"); // Received data: "It works!" ~~~ js 是面向對象的,但是是“基于原型的面向對象”,沒有類。沒有多重繼承,沒有接口。沒有結構體,沒有枚舉類型。 但它的字面量哈希和 function 都足夠靈活,拼拼湊湊,上面那些東西都能“模擬”著用。 說到沒有類的這個問題,很多人總是要糾正其他人關于 js 原型的理解的。我覺得這是沒有必要的。基于原型又不是很牛逼,ES6不是照樣給出了 class 關鍵字嗎。不管類還是原型都是為了抽象,爛的東西始終爛,不好理解的始終不好理解。 最近學習 ios 的 swift,看見里面有不少相比 objc 舒服的改進。比如 objc 的“方法調用”,學的是 smalltalk 那一套,那不叫方法調用,而是消息傳遞。結果 swift 里面不照樣是方法調用的形式? ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#callback-hell)callback hell 用 eventproxy 和 async 已經能解決大部分問題。剩下的小部分問題,肯定是設計錯誤。:) 參見: * 《使用 eventproxy 控制并發》:[https://github.com/alsotang/node-lessons/tree/master/lesson4](https://github.com/alsotang/node-lessons/tree/master/lesson4) * 《使用 async 控制并發》:[https://github.com/alsotang/node-lessons/tree/master/lesson5](https://github.com/alsotang/node-lessons/tree/master/lesson5) ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#數據類型)數據類型 寫 js 很少去定義類。Object 的便利在多數其他語言需要定義類的場景下都能直接用。 js 中,用好 Number,String,Array,Object 和 Function 就夠了。有時用用 RegExp。 用于 js 這門語言本身的殘廢,大多數時候都采用“約定勝于配置”的思想來交互合作。 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#控制流)控制流 很常規,C 語言那套。 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#基本運算符)基本運算符 C 語言那套。二進制操作并不會降低效率,V8 很聰明的。 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#計算型屬性)計算型屬性 也就是幫一個對象的屬性定義 get 和 set 方法,通過?`obj.value`?和?`obj.value=`?的形式來調用。 koa([http://koajs.com/](http://koajs.com/)?) 把這套玩得爐火純青。 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#運算符重載)運算符重載 無 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#類型轉換)類型轉換 手動幫你需要轉換的類型的類定義?`.toxxx`?方法,比如?`.toString`,`.toJSON`,`toNumber`。 js 的隱式類型轉換用一次坑一次。 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#相等比較)相等比較 在 js 中,務必使用?`===`?三個等于號來比較對象,或者自定義方法來比較,不要使用?`==`。 我最近做一個項目,從數據庫中取出的數據,雖然應該是字符型的,但有時它們是 String 的表示,有時是 Number 的表示。為了省事,會有人直接用?`==`?來對它們進行比較。這種時候,建議在比較時,把它們都轉成 String 類型,然后用`===`?來比較。 比如?`var x = 31243; var y = '31243'`,比較時,這么做:`String(x) === String(y)` ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#嵌套類型)嵌套類型 隨便弄。 function 構造函數、閉包、字面量哈希,都可以混在一起寫,多少層都行,無限制。 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#拓展)拓展 當無法接觸一個類的源碼,又想幫這個類新增方法的時候。操作它的 prototype 就好了。但不推薦! ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#函數式編程)函數式編程 js 中,匿名函數非常的方便,有效利用函數式編程的特性可以使人寫代碼時心情愉悅。 使用 lodash:[https://lodash.com/docs](https://lodash.com/docs) ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#泛型)泛型 類型都經常忽略還泛型!every parammeter is 泛型 in js ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#權限控制)權限控制 類定義中,沒有 public private 等關鍵詞,都靠約定。而且經常有人突破約定。 有些 http 方面的庫,時不時就去 stub 原生 http 庫的方法,0.11 時的 node.js 完全不按章法出牌,所以很多這些庫都出現兼容性問題。 ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#設計模式)設計模式 《解密設計模式-王垠》 [https://github.com/alsotang/node-lessons/blob/master/lesson14/%E8%A7%A3%E5%AF%86%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E7%8E%8B%E5%9E%A0.md](https://github.com/alsotang/node-lessons/blob/master/lesson14/%E8%A7%A3%E5%AF%86%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E7%8E%8B%E5%9E%A0.md) ### [](https://github.com/alsotang/node-lessons/tree/master/lesson14#構建大型項目)構建大型項目 從 npm 上面尋找質量高的庫,并用質量高的方式拼湊起來。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看