1. 程式人生 > >nodeJs模組_new類_繼承(基於遊戲開發)

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