nodeJs模組_new類_繼承(基於遊戲開發)
阿新 • • 發佈:2019-02-15
程式碼模組
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) 如果外面沒有表,那麼this為undefine;
(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()方法來定義一個類,讓它繼承基類;