前端基礎(chǔ)(問答28)


keywords: 繼承。


  • 繼承有什么作用?

繼承可以使對(duì)象使用其他對(duì)象的屬性和方法蕾盯。例如Person朗若、Male、Female3個(gè)對(duì)象镰矿,可以使Male和Female繼承Person的屬性的方法,同時(shí)Male和Female又具有自己的獨(dú)特方法和屬性俘种,這樣可以減少代碼量秤标,優(yōu)化性能。

  • 有幾種常見創(chuàng)建對(duì)象的方式? 舉例說(shuō)明?

有4中常見的創(chuàng)建對(duì)象方式:普通模式宙刘、工廠模式苍姜、構(gòu)造函數(shù)模式、原型模式悬包。

普通模式:

obj = {
    name:'hello',
    age:100,
    sayName:function() {
        console.log(this.name)
    },
    sayAge:function() {
        console.log(this.age)
    }
}

工廠模式:

function person(name,age) {
    var obj = new Object()
    obj.name = name
    obj.age = age
    obj.sayName = function() {
        console.log(this.name)
    }
    obj.sayAge = function() {
        console.log(this.age)
    }
    return obj
}

var p1 = person('hello',100)
var p2 = person('world',12)

構(gòu)造函數(shù)模式:

function Person(name,age) {
    this.name = name
    this.age = age
    this.sayName = function() {
        console.log(this.name)
    }
    this.sayAge = function() {
        console.log(this.age)
    }
}

var p1 = new Person('hello',100)
var p2 = new Person('world',12)

原型模式:

function Person(name,age) {
    this.name = name
    this.age = age
}

Person.prototype = {
    this.sayName:function() {
    console.log(this.name)
    },
    this.sayAge:function() {
        console.log(this.age)
    }
}

var p1 = new Person('hello',100)
var p2 = new Person('world',12)
  • 下面兩種寫法有什么區(qū)別?

//方法1
function People(name, sex){
    this.name = name;
    this.sex = sex;
    this.printName = function(){
        console.log(this.name);
    }
}
var p1 = new People('饑人谷', 2)

//方法2
function Person(name, sex){
    this.name = name;
    this.sex = sex;
}

Person.prototype.printName = function(){
    console.log(this.name);
}
var p1 = new Person('若愚', 27);

方法一屬于構(gòu)造函數(shù)模式衙猪,方法二屬于原型模式。
方法一的printName是定義p1上布近,此時(shí)的printName是p1獨(dú)有的垫释;而方法二的printName是定義在p1的原型上,此時(shí)的printName是所有實(shí)例共享的撑瞧。

  • Object.create 有什么作用棵譬?兼容性如何?如何使用预伺?

Object.create接受一個(gè)對(duì)象a作為參數(shù)订咸,并返回一個(gè)對(duì)象b曼尊。Object.create會(huì)將對(duì)象b的__proto__指向?qū)ο骯。

var a = {
    print:function () {
        console.log('hello')
    }
}
var b = Object.create(a)
console.log(b.__proto__)

//Object{print:a.print()}

兼容性:

Object.create兼容性
  • hasOwnProperty有什么作用脏嚷? 如何使用骆撇?

hanOwnProperty用于判斷某個(gè)屬性是否定義在對(duì)象自身,如果該存在且不再該對(duì)象上,則在原型鏈上然眼。
eg:

var obj = {
    name:'hello',
    age:100
}

console.log(!!obj.hasOwnProperty)
obj.hasOwnProperty('hasOwnProperty')

//true
//false

obj.hasOwnProperty('name')

//true
  • 實(shí)現(xiàn)Object.create的 polyfill艾船,如:(ps: 寫個(gè) 函數(shù)create,實(shí)現(xiàn) Object.create 的功能)

function create(o) {
    if (typeof Object.create !== 'function') {
        function Fun() {}
        Fun.prototype = o
        return new Fun()
    } else {
        return Object.create(o)
    }
}

var obj = {a: 1, b:2};
var obj2 = create(obj);
console.log(obj2.a); //1
  • 如下代碼中call的作用是什么?

function Person(name, sex){
    this.name = name;
    this.sex = sex;
}
function Male(name, sex, age){
    Person.call(this, name, sex);    //這里的 call 有什么作用
    this.age = age;
}

//執(zhí)行Person函數(shù)高每,修改其中的this指向?qū)嵗龑?duì)象屿岂,并傳入兩個(gè)參數(shù)name和sex。
  • 補(bǔ)全代碼鲸匿,實(shí)現(xiàn)繼承

function Person(name, sex){
    this.name = name
    this.sex = sex
}

Person.prototype.getName = function(){
    console.log(this.name)
};    

function Male(name, sex, age){
   Person.call(this,name,sex)
   this.age = age
}

Male.prototype = Object.create(Person.prototype)
Male.prototype.constructor = Male

Male.prototype.getAge = function(){
    console.log(this.age)
};

var ruoyu = new Male('若愚', '男', 27);
ruoyu.getName();

代碼

  • 實(shí)現(xiàn)如下dialog 彈窗功能

//功能描述: 
// 1. 可使用 dialog.open() 去打開彈窗
// 2. 當(dāng)點(diǎn)擊確定爷怀、取消時(shí)可使用用戶自定義事件
// 3. dialog 可拖動(dòng)
// 4. 允許頁(yè)面展示多個(gè) dialog


function Dialog(){
//todo ...
}


var tpl = '<ul><li>列表1</li><li>列表2</li><li>列表1</li><li>列表1</li></ul>';

$('#open4').on('click',function(){
  var dialog4 = new Dialog();
  dialog4.open({
    title: '歡迎來(lái)到饑人谷',
    message: tpl,
    isShowCloseBtn: true,
    isShowConfirmBtn: true,
    onClose: function(){
      alert('close')
    },
    onConfirm: function(){
      alert('確定');
    }
  });
});

效果+代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市带欢,隨后出現(xiàn)的幾起案子运授,更是在濱河造成了極大的恐慌,老刑警劉巖乔煞,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吁朦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡渡贾,警方通過(guò)查閱死者的電腦和手機(jī)逗宜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)空骚,“玉大人纺讲,你說(shuō)我怎么就攤上這事《谝伲” “怎么了熬甚?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肋坚。 經(jīng)常有香客問我乡括,道長(zhǎng),這世上最難降的妖魔是什么智厌? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任粟判,我火速辦了婚禮,結(jié)果婚禮上峦剔,老公的妹妹穿的比我還像新娘。我一直安慰自己角钩,他們只是感情好吝沫,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布呻澜。 她就那樣靜靜地躺著,像睡著了一般惨险。 火紅的嫁衣襯著肌膚如雪羹幸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天辫愉,我揣著相機(jī)與錄音栅受,去河邊找鬼。 笑死恭朗,一個(gè)胖子當(dāng)著我的面吹牛屏镊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痰腮,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼而芥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了膀值?” 一聲冷哼從身側(cè)響起棍丐,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沧踏,沒想到半個(gè)月后歌逢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翘狱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年秘案,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盒蟆。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踏烙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出历等,到底是詐尸還是另有隱情讨惩,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布寒屯,位于F島的核電站荐捻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏寡夹。R本人自食惡果不足惜处面,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菩掏。 院中可真熱鬧魂角,春花似錦、人聲如沸智绸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至斯稳,卻和暖如春海铆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挣惰。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工卧斟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人憎茂。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓珍语,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親唇辨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廊酣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 繼承有什么作用? (難度:3*) 繼承可以使一個(gè)對(duì)象直接使用另一個(gè)對(duì)象的屬性和方法。 有幾種常見創(chuàng)建對(duì)象的方式? ...
    coolheadedY閱讀 511評(píng)論 0 0
  • 那是一幅詠嘆悲傷的風(fēng)景畫 從來(lái)都來(lái)不及用任何言語(yǔ)去描述它 便已在記憶之中生根發(fā)芽 我曾想赏枚,塵封的往事怎會(huì)令人如此牽...
    大同手記閱讀 741評(píng)論 9 50
  • 我是一株開花的樹 長(zhǎng)在你必經(jīng)的路口 一天又一天 一年又一年 春來(lái)時(shí) 開滿花朵 只為你看我一眼 然后亡驰,繁華落盡 我度...
    北環(huán)路真人閱讀 314評(píng)論 0 1
  • 人的一生凡辱, 總不是想象中的那么好 每個(gè)人背后都會(huì)有心酸 都會(huì)有無(wú)法言說(shuō)的艱難 有眼淚要擦,有自己的路要走 只要記得...
    易先生w閱讀 196評(píng)論 0 0
  • 朔風(fēng)中 你已佇立許久 身上的葉片 已被狂風(fēng)掠走 光禿禿的軀干 只有瘦弱的枝椏 與你堅(jiān)守 朔風(fēng)中 你已昂首許久 即使...
    南疆漁夫閱讀 249評(píng)論 0 4