nodeJs模塊_new類_繼承(基於遊戲開發)

代碼模塊

1:js裏面代碼可以放在不同的文件裏,稱爲代碼模塊;

這裏寫圖片描述

2:一個模塊需要引用其它模塊代碼的時候使用 require;
3: require:
     (1) 如果是第一次調用,那麼就加載,執行腳本;
     (2)  每個代碼模塊由module.exports 導出的對象;
     (3) 每次require的時候,都返回module.exports;
     (4)如果不是第一次執行,那麼直接返回module.exports;

這裏寫圖片描述

這裏寫圖片描述


this

1:function.call(this, param1, param2);
2:表.函數名(參數):
    (1) 在函數裏面 有一個this對象,指的是外面的表;
    (2) 如果外面沒有表,那麼thisundefine;
    (3) 函數.bind(數據對象),會產生一個新的函數對象,調用這個函數的this,就是外面bind的對象;
顯示和隱式調用與強制傳遞this

這裏寫圖片描述

bind

這裏寫圖片描述

強制綁定(bind)的優先級高於顯示綁定

這裏寫圖片描述

做回調函數的時候都是通過強制bind,強制bind this,優先級比其它的都高;

顯示綁定高於隱式綁定

這裏寫圖片描述


this 有什麼用呢?

javascript都是動態的藉助於 Function+This 實現面向對象,沒有象Java,c#,……..真真正正的實現面向對象,this就更象我們面向對象的思維,觀察下面代碼,更象-面向對象的(類,實例)、屬性,方法。完全藉助於This實現了面向對象;
這裏寫圖片描述


原型引用

1:每個函數對象都有prototype屬性;

這裏寫圖片描述

2: clone一個函數對象的prototype;
     (1)定義一個空函數;
    (2)空函數的prototype = 函數對象的prototype;

這裏寫圖片描述


     (3) 新構造函數.prototype = new 空函數();
     //step1 var data = {};
     //step2 data.__proto__:prototype 的淺複製
     //step3 實例 作爲this,傳遞給後面的函數
     //step4 調用這個函數;

這裏寫圖片描述


new 與構造函數

上面的(原型引用)  data 是一張表(字典);

1: js 構造函數: 普通的函數(參數),一般和類的名字是一樣的;
2: new +構造(參數1, 參數2....);
    (1)先創建一個{}對象;
    (2)將這個新對象綁定到函數裏面的this;
    (3)構造函數對象的prototype 複製給新對象的 __proto__
    (4) 返回新創建的對象;

這裏寫圖片描述

3: 表.函數調用搜索順序,現在key, value裏查找,再到__proto__裏找;

這裏寫圖片描述

this之---淺拷貝(淺複製),new

這裏寫圖片描述

定義一個類

這裏寫圖片描述

以上的定義很基礎很底層,而且還很蛋疼的邏輯,但是它是很多語言通用的邏輯……….但必須深入的瞭解,往下繼承,我們再將這個—–類封裝一下。
爲接下來的遊戲開發打下牢牢的基礎


js實現繼承

繼承是什麼意思呢?實際上就是寫了上面人的(類)的代碼,完了不想再寫,我們已經寫了人的(類),再想寫出男人的(類)
那麼我們就需要使用繼承 

這裏寫圖片描述

1: 子類clone 基類構造函數的prototype; 

這裏寫圖片描述

2:  子類和基類如果有同名的方法,會現在當前這個類的函數;

這裏寫圖片描述

如果想打印同名基類的方法呢???
3: 子類的實例顯示的調用基類的函數
    基類.prototype.函數名字.call(實例, 參數1,參數2);

這裏寫圖片描述

以上是最底層,最基礎的類,寫起來很蛋疼......我們可以將類進一步封裝
4: 編寫一個Class()方法來定義一個類,讓它繼承基類;

這裏寫圖片描述


code

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章