用物件導向的Javascript來介紹一下自己,物件導向javascript
看了一道題目《用物件導向的Javascript來介紹一下自己》,然後自己覺得挺好玩的,所以就編寫如下的代碼。
// HELPERfunction extend(sup, overrides) {var sub = overrides && overrides.constructor || function() {sup.apply(this, arguments);};var fn = function() {};var subp;fn.prototype = new sup;subp = sub.prototype = fn.prototype;subp.constructor = sub;apply(subp, overrides);sub.superClass = sup.prototype;return sub;}function apply(o, c) {if (o && c && typeof c == 'object') {for (var p in c) {o[p] = c[p];}}return o;}function FrontEnder() {this.skills = ['HTML', 'CSS', 'JavaScript'];}apply(FrontEnder.prototype, {code: function() {console.log('我能編寫處理商務邏輯代碼');},paint: function() {console.log('我能還原設計稿');},debug: function() {console.log('我能使用工具調試代碼');}});var Me = extend(FrontEnder, {constructor: function() {// 個人的性格是怎麼樣的?等完善var _character = '';return function Me(config) {config = config || {};Me.superClass.constructor.call(this);this.skills = this.skills.concat(['HTML5', 'CSS3', 'Grunt', 'Zepto', 'Webapp', 'ChromeDevtool']);apply(this, config);}}(),paint: function() {Me.superClass.paint.call(this);console.log('我可以用CSS3、HTML5還原設計稿');},code: function() {Me.superClass.code.call(this);console.log(function() {/**1. 根據規範來命名如駝峰、_、$等;2. 使用閉包來避免變數汙染;3. 相同處理邏輯代碼抽出來作為一個功能模組;4. 避免與HTML、CSS產生耦合;5. 注意代碼的效能最佳化*/}.toString().split('\n').slice(2, -2).toString().replace(/\t/g, '').split(',').join('\n'))},manage: function() {console.log('我有一個屬於自己的程式碼程式庫和記錄知識點的部落格');},habit: function() {console.log('twitter、HTML5Rock、CSS3-trick、W3.org...');},enjoy: function() {console.log('我喜歡打籃球和看NBA,最喜歡的球員是Steve·Nash');}});var me = new Me({ChineseName: '張楷豪',EnglishName: 'monkindey',Birthday: '1993-07',Email: 'monkindey@163.com',School: '廣東工業大學電腦學院網路工程 11級'});console.dir(me);
複製代碼到chrome開發人員工具中,效果可能會更好點。