成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

題目

原題目來源于一個網(wǎng)友的問答

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

分析

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

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

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

initialize的this指向顯然要改成指向子類構(gòu)造函數(shù)中的this。

解答

一. 要實現(xiàn)分析的第三點,不難想到使用函數(shù)的原型

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

二. initialize方法實現(xiàn)構(gòu)造函數(shù)繼承

Function.prototype.extend= Function.prototype.extend || function(obj) { var self = this; //這里的this指向函數(shù)調(diào)用者,也可以是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指向函數(shù)調(diào)用者,也可以是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;}

問題

添加較為嚴謹?shù)念愋团袛?/p>

組合繼承是存在一定問題的(見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指向函數(shù)調(diào)用者,也可以是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;}

總結(jié):

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

希望有更好的解決方案出現(xiàn)。

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

標簽: JavaScript
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产麻豆精品一区二区| 99久久精品免费看国产免费软件| 国产精品资源站在线| 色噜噜狠狠色综合中国| 亚洲综合精品久久| 亚洲国产精品久久久久婷婷老年| 精品福利一区二区三区| 国产美女精品人人做人人爽| 欧美性欧美巨大黑白大战| 日韩中文字幕不卡| 久久成人国产| 午夜精品久久久久久久99樱桃| 在线视频日韩| 一区二区三区在线观看动漫 | 中文亚洲免费| 亚洲欧美日韩国产综合| 欧美日韩综合另类| 国产欧美日韩综合| 欧美区日韩区| 亚洲欧美在线另类| 国产在线观看一区| 国产精品久久看| 亚洲一二三区精品| 亚洲视频一区二区在线| 亚洲国产精品一区| 一区二区三区四区av| 国产精品毛片va一区二区三区| 亚洲三级免费观看| 亚洲人成毛片在线播放女女| 亚洲欧美激情小说另类| 国产欧美一区二区三区国产幕精品| 亚洲精品国产一区二区三区四区在线| 精品不卡一区| 亚洲精品免费视频| 麻豆久久久9性大片| 午夜欧美大尺度福利影院在线看| 久久五月激情| 精品一区中文字幕| 日韩一区二区三区四区五区六区 | 国产精品理伦片| 99视频精品| 午夜在线电影亚洲一区| 欧美三片在线视频观看| 国产一区二区不卡| 久久亚洲精精品中文字幕早川悠里 | 欧美大黄免费观看| 亚洲欧美亚洲| 综合亚洲深深色噜噜狠狠网站| 日韩一级不卡| 蜜臀av性久久久久蜜臀aⅴ| 欧美肥妇bbw| 99久久婷婷国产综合精品电影| 国产日韩av一区| 一本色道久久综合亚洲精品婷婷 | 日韩伦理电影网| 久久久99爱| 国产精品亚洲第一区在线暖暖韩国| 精品成人一区二区三区| 黄色亚洲在线| 午夜精品久久久久久久久久久| 欧美一区二区三区性视频| 你懂的视频一区二区| 一级女性全黄久久生活片免费| 欧美三级韩国三级日本三斤 | 久久综合一区| 成人黄色综合网站| |精品福利一区二区三区| 免费久久99精品国产自在现线| 精一区二区三区| 欧美大胆一级视频| 激情久久中文字幕| 日韩精品福利网| 91精品免费观看| 国产精品v欧美精品v日本精品动漫 | 欧美久久一区二区| 午夜国产精品视频| 五月天中文字幕一区二区| 91精品国产一区二区人妖| 色综合天天性综合| 午夜精品一区二区三区电影天堂| 日韩一级视频免费观看在线| 在线观看欧美一区| 久久精品国产99久久6| 久久久精品tv| 久久一区中文字幕| 99精品久久只有精品| 亚洲第一成年网| 欧美大片一区二区三区| 一区二区三区精品视频在线观看| 麻豆专区一区二区三区四区五区| 久久综合九色综合欧美98| 国产精品亚洲综合久久| 国产高清不卡一区二区| 中文成人av在线| 在线日韩国产精品| 国产主播一区二区三区四区| 看电视剧不卡顿的网站| 国产情人综合久久777777| 日本韩国欧美一区二区三区| 91视频在线看| 日本在线观看不卡视频| 久久九九国产精品| 欧美性受极品xxxx喷水| 韩国亚洲精品| 国产福利精品一区二区| 亚洲综合精品自拍| 精品少妇一区二区三区免费观看| 亚洲欧美日韩视频二区| 丁香婷婷综合激情五月色| 亚洲综合av网| 久久伊99综合婷婷久久伊| 欧洲精品中文字幕| 亚洲人体大胆视频| 国产精品亚洲人在线观看| 亚洲成av人**亚洲成av**| 国产午夜精品久久久久久久| 欧美三级电影网站| 国产亚洲欧美另类一区二区三区| 不卡大黄网站免费看| 天天综合色天天综合色h| 欧美国产精品一区二区三区| 欧美三级日韩三级| 国产一区二区三区奇米久涩| 91美女在线看| 精品一区二区在线观看| 亚洲精品成人在线| 久久精品夜色噜噜亚洲aⅴ| 欧美丝袜自拍制服另类| 国产精品久久久久久模特| 99久久精品一区| 国产一区二区剧情av在线| 亚洲成人激情自拍| 1区2区3区精品视频| 久久色成人在线| 欧美日韩夫妻久久| 男人天堂欧美日韩| 亚洲大胆av| 午夜国产欧美理论在线播放 | 1024成人| 欧美a级片一区| 国产激情91久久精品导航| 五月天亚洲婷婷| 亚洲欧美一区二区三区久本道91| 26uuu精品一区二区三区四区在线| 欧亚洲嫩模精品一区三区| 国产亚洲精品v| 一色屋精品视频在线观看网站| av电影天堂一区二区在线观看| 久久99国产精品久久99| 日本午夜一本久久久综合| 一区二区欧美在线观看| 中文久久乱码一区二区| 精品国产一区二区三区久久影院| 欧洲生活片亚洲生活在线观看| 久久国产精品高清| 亚洲人久久久| 亚洲激情社区| 欧美日韩国产综合视频在线| 成av人片一区二区| 国产精品一区二区久激情瑜伽| 久久国产精品99精品国产| 日韩av一区二区在线影视| 亚洲一级二级三级| 亚洲激情自拍偷拍| 中文字幕在线播放不卡一区| 亚洲国产精品精华液ab| 国产网站一区二区三区| 欧美精品一区二区高清在线观看| 91精品国产色综合久久久蜜香臀| 欧美美女直播网站| 欧美男男青年gay1069videost | 一区二区av| 亚洲精品免费观看| 在线播放亚洲| 亚洲精品美女91| 夜夜爽99久久国产综合精品女不卡| 伊人久久综合| 欧美日韩国产综合在线| 国产精品v一区二区三区| 欧美区高清在线| 国产在线日韩| 夜久久久久久| 久久国产精品亚洲77777| 男女精品网站| 在线区一区二视频| 欧美日韩精品电影| 538prom精品视频线放| 日韩一级片网站| 久久久久久麻豆| 欧美国产综合色视频| 中文字幕制服丝袜成人av| 亚洲另类一区二区| 亚洲国产精品久久人人爱| 欧美aaa在线| 九九国产精品视频| 粉嫩在线一区二区三区视频| 99久久精品免费| 黄色国产精品| 麻豆精品传媒视频| 欧美精品久久一区二区三区|