日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

一道有價值的JS繼承面試題

瀏覽:178日期:2024-05-27 09:37:57

題目

原題目來源于一個網友的問答

var A = function() { this.name = ’apple’;}A.prototype.getName = function() { return this.name;}// 補充代碼var B = A.extend({ initialize: function() {this.superclass.initialize.call(this);this.total = 3; }, say: function() {return ’我有’ + this.total + ’個’ + this.getName() }});var b = new B();console.log(b.say()); //我有3個apple

分析

題目希望生成一個新的構造函數,B繼承于A。(盡量不要更改A)

題目表達出希望有initialize方法實現構造函數繼承,又需要原型繼承。不難想到我們要用組合繼承、寄生組合繼承或者ES6繼承。

如果所有的函數都可以使用extend方法生成一個新的構造函數,那方法的通用性會更強。

initialize的this指向顯然要改成指向子類構造函數中的this。

解答

一. 要實現分析的第三點,不難想到使用函數的原型

Function.prototype.extend= Function.prototype.extend || function(obj) {}

二. initialize方法實現構造函數繼承

Function.prototype.extend= Function.prototype.extend || function(obj) { var self = this; //這里的this指向函數調用者,也可以是A function SubClass() {this.superclass = { initialize: self };if (obj.initialize) { obj.initialize.call(this); //處理this指向問題} }return SubClass;}

三. 原型繼承并且添加新的原型方法

Function.prototype.extend= Function.prototype.extend || function(obj) { var self = this; //這里的this指向函數調用者,也可以是A function SubClass() {this.superclass = { initialize: self };if (obj.initialize) { obj.initialize.call(this); //處理this指向問題} }SubClass.prototype = new self(); SubClass.prototype.constructor = SubClass; for(var key in obj){if(key !== ’initialize’){ SubClass.prototype[key] = obj[key]} }return SubClass;}

問題

添加較為嚴謹的類型判斷

組合繼承是存在一定問題的(見javascript高級教程第六章),如果能用ES6繼承會更好。

改進

function inherits(subClass, superClass) { // ES6繼承 if (typeof superClass !== 'function' && superClass !== null) {throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, {constructor: { value: subClass, enumerable: false, writable: true, configurable: true} }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;}function getType(obj) { return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();}Function.prototype.extend= Function.prototype.extend || function(obj) { var self = this; //這里的this指向函數調用者,也可以是A function SubClass() {this.superclass = { initialize: self };if (getType(obj) === ’object’ && getType(obj.initialize) === ’function’) { obj.initialize.call(this); //處理this指向問題} }inherits(SubClass, self); for (var key in obj) {if (key !== ’initialize’) { SubClass.prototype[key] = obj[key]} }return SubClass;}

總結:

該題目考查了幾個重要的知識點:原型,繼承,閉包,this指向。是一道比較值得去好好思考的題目。

希望有更好的解決方案出現。

來自:https://segmentfault.com/a/1190000008888142

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品亚洲欧美日韩一区在线| 精品久久影院| 伊人国产精品| 99riav国产精品| 亚洲一区久久| 亚洲女同中文字幕| 亚洲欧美专区| 欧美亚洲自偷自偷| 国产在线一区不卡| 国产二区精品| 影音先锋久久精品| 久久99伊人| 亚洲精品视频一二三区| 亚洲一区免费| 日韩中文字幕| 国产福利一区二区精品秒拍| 久久免费高清| 视频一区二区不卡| 国产欧美成人| 欧美精品97| 免费观看久久av| 亚洲深爱激情| 日韩在线观看中文字幕| 在线一区av| 久久国产精品亚洲77777| 美女尤物国产一区| 国产精品玖玖玖在线资源| 天堂俺去俺来也www久久婷婷| 日韩av中文字幕一区| 成人精品视频| 日韩一区精品字幕| 国产欧美亚洲精品a| 午夜精品成人av| 国产欧美日韩一区二区三区四区| 免费在线日韩av| 美女网站一区| 国产精品高清一区二区| 美女少妇全过程你懂的久久| 四虎精品永久免费| av资源中文在线天堂| 午夜免费一区| 亚洲三级精品| 四虎8848精品成人免费网站| 欧美片第1页| 日韩精品欧美| 亚洲人妖在线| 国产一区二区视频在线看| 综合日韩av| 久久亚洲图片| 你懂的国产精品永久在线| 免费高潮视频95在线观看网站| 在线日韩欧美| 婷婷亚洲成人| 国产一区二区三区亚洲综合| 亚洲a在线视频| 国产美女久久| 亚洲一级二级| 国产欧美亚洲一区| 91亚洲国产成人久久精品| 欧美精选一区二区三区| 日本少妇一区二区| 日韩中文在线电影| 奇米色欧美一区二区三区| 久久男人天堂| 日韩精品导航| 亚洲成人av观看| 日韩激情一二三区| 精品国产乱码久久久| 少妇精品在线| www.com.cn成人| 日韩av一区二区在线影视| 国产不卡人人| 日韩精品亚洲aⅴ在线影院| 精品久久不卡| 日本亚洲视频在线| 日韩一区电影| 欧美日本久久| 国产精品嫩草99av在线| 国产精品黑丝在线播放| 欧美一区在线观看视频| 夜久久久久久| 91tv亚洲精品香蕉国产一区| 国产人成精品一区二区三| 亚洲经典在线| 国产一区二区三区四区五区| 亚洲伊人影院| 日韩专区精品| 久久精品国产精品亚洲毛片| 99日韩精品| 久久久久美女| www在线观看黄色| 久久不见久久见国语| 日韩精品免费观看视频| 99国产精品久久久久久久| 欧美13videosex性极品| 麻豆91精品视频| 日韩区一区二| 久热精品在线| 成人精品天堂一区二区三区| 岛国av在线播放| 欧美极品中文字幕| 日本在线一区二区三区| 日韩中文字幕1| 国产欧美一区二区三区精品酒店| 国产亚洲久久| 欧美日韩亚洲三区| 日韩美女精品| 日韩精品免费一区二区夜夜嗨| 亚洲一区二区三区高清| 久久精品国产68国产精品亚洲| 国产拍在线视频| 日韩av片子| 国产精品伦理久久久久久| 日本麻豆一区二区三区视频| 在线日韩成人| 蜜臀va亚洲va欧美va天堂 | 亚洲影院天堂中文av色| 亚洲国内精品| 蜜桃视频欧美| 黄色免费成人| 三级亚洲高清视频| 水蜜桃久久夜色精品一区的特点| 老牛影视一区二区三区| 亚洲一级在线| 午夜亚洲一区| 丝袜美腿亚洲一区| 亚洲网址在线观看| 日韩高清在线一区| 国产图片一区| 精品国产aⅴ| 卡一精品卡二卡三网站乱码| 国产欧美一区| 国产精品麻豆久久| 日韩精品诱惑一区?区三区| 中文在线免费视频| 黄色成人91| 亚欧洲精品视频在线观看| 欧美日韩精品一区二区三区在线观看| 欧美日韩调教| 国产精品一线| 国产精品久久777777毛茸茸| 欧美aaaaaa午夜精品| 国产一区二区三区黄网站| av在线最新| 蜜桃视频欧美| 中文字幕一区二区三区日韩精品| 三级欧美在线一区| 奇米777国产一区国产二区| 麻豆精品视频在线观看视频| 国产精品xxx| 精品久久视频| 久久www成人_看片免费不卡| 天堂va在线高清一区| 麻豆免费精品视频| yellow在线观看网址| 性欧美69xoxoxoxo| 国产调教精品| 91精品一区二区三区综合在线爱| 亚洲深爱激情| 欧美日韩亚洲一区在线观看| 精品国产麻豆| 国产亚洲一区二区手机在线观看| 欧美日韩一区二区三区视频播放| sm捆绑调教国产免费网站在线观看| 热久久久久久久| 国产精品二区影院| 欧美一级精品| 欧美亚洲网站| 久久中文字幕av一区二区不卡| 天海翼精品一区二区三区| 精品伊人久久| 丝袜美腿成人在线| 国产一区二区三区四区大秀| 中文一区一区三区高中清不卡免费| 蜜桃久久av一区| 久久久久久一区二区| 欧美女激情福利| 国产精品成人**免费视频| 欧美手机在线| 麻豆精品蜜桃视频网站| 黑丝一区二区| 国产精品传媒麻豆hd| 亚洲激情婷婷| 精品久久久久久久| 中文字幕av一区二区三区人| 天堂中文在线播放| 欧美日韩夜夜| 视频一区中文字幕| 人人爱人人干婷婷丁香亚洲| 日韩欧美少妇| 国产日产一区| 国产高潮在线| 精品久久久中文字幕| 香蕉久久一区| 亚洲激情久久| 欧洲av不卡| 精品一区二区三区免费看| 日韩1区2区3区| 国产精品免费看| 日韩avvvv在线播放|