繼承

1.繼承有什么作用?

繼承可以將構(gòu)造函數(shù)的prototype屬性跟這個函數(shù)所創(chuàng)建的對象proto共享起來,這樣在創(chuàng)建的對象中不用重寫這些屬性跟方法潜沦,提升了代碼的復(fù)用率亮蒋,使代碼關(guān)系也簡潔明了。

2.有幾種常見創(chuàng)建對象的方式? 舉例說明?

1.普通模式
直接賦值生成一個對象懂傀,不可復(fù)用,代碼量大蜡感。

var obj = {
            name = "jirengu",
            age = 18,
            sayName:function(){
                      console.log("this.name")  
          } 
}

2.工廠模式

    function People(name,age,sex){
        var p = {
            name:name,
            age:age,
            sex:sex,
            saySex:function(){
                console.log('我是'+this.sex)
            }
        };
        return p
    }
    var p1 = People('hunger',18,'男');
    var p2 = People('小紅',16,'女');

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

function People(name,age,sex){
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.saySex = function(){
        console.log('我是'+this.sex)
    }
}
    p1 = new People('hunger',16,'男');
    p2 = new People('gu',15,'女')

這樣每創(chuàng)建一個對象都會有一個saySex的方法 很占用內(nèi)存
4.原型模式

function People(name,age,sex){

    }
    People.prototype = {
        constructor:People,
        name:'hunger',
        age:17,
        sex:'男',
        saySxe:function(){
            console.log(this.sex)
        }
    }
    var p1 = new People()

原型模式的弊端在于因為屬性和方法共享蹬蚁,使得引用類型屬性容易出現(xiàn)問題。
5.構(gòu)造函數(shù)模式和原型模式組合

function People(name,age,sex){
    this.name = name;
    this.age = age;
    this.sex = sex;
    }
People.prototype.Saysex = function(){
    console.log('我是'+this.sex)
}

    var p1 = new People('hunger',13,'男')

這種模式每個實例都擁有自己的屬性郑兴,而方法添加在了原型中犀斋,實現(xiàn)了共用方法,所以這種模式是現(xiàn)在最好的構(gòu)建對象的方法情连。

3.下面兩種寫法有什么區(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);

方法1的屬性跟方法都寫在了構(gòu)造函數(shù)上叽粹,創(chuàng)建對象時每個對象都擁有printName的方法造成了資源浪費。方法2的屬性在構(gòu)造函數(shù)上而方法寫在了原型prototype上,實現(xiàn)了共用方法虫几,節(jié)約了資源锤灿。

4.Object.create 有什么作用?兼容性如何辆脸?如何使用但校?
  • Object.create的作用是創(chuàng)建一個指定原型并且可以選擇性的包含指定屬性的對象。
  • 兼容性:IE8以上啡氢。
    使用方法Object.craete(prototype,[])
function People(name,age,sex){
    this.name = name;
    this.age = age;
    this.sex = sex;
    }

People.prototype.Saysex = function(){
    console.log('我是'+this.sex)
}
function Person(name,age,sex){
    this.name = name;
    this.age = age;
    this.sex = sex;
}
Person.prototype = Object.create(People.prototype)
    var p1 = new Person('hunger',13,'男')//我是男
5.hasOwnProperty有什么作用始腾? 如何使用?

判斷一個屬性是否定義在對象自身空执,而不是在原型鏈上

//接上例
p1.hasOwnProperty('name');//true
p1.hasOwnProperty('Saysex')//false
6.實現(xiàn)Object.create的 polyfill浪箭,如:(ps: 寫個 函數(shù)create辨绊,實現(xiàn) Object.create 的功能)
if(typeof Object.create != 'function'){
    Obj.create = (function(){
        function Temp(){}
        var hasOwn = Object.prototype.hasOwnProperty;
        return function(proto){
            if(typeof proto != 'object'){
                throw TypeError('原型參數(shù)必須是對象或者null')
            }else{
                Temp.prototype = a;
                var obj = new Temp();
                a = null;
                if(arguments.length > 1){
                    var Properties = Object(arguments[1]);
                    for(var prop in Properties){
                        if(hasOwn.call(Properties,prop)){
                            obj[prop] = obj[prop]
                        }
                    }
                }
                return obj
            }
        }
    })()
}
7.如下代碼中call的作用是什么?
function Person(name, sex){
    this.name = name;
    this.sex = sex;
}
function Male(name, sex, age){
    Person.call(this, name, sex);    //在Male的作用域中調(diào)用Person函數(shù),使Male函數(shù)能夠執(zhí)行Person的代碼门坷,實現(xiàn)構(gòu)造函數(shù)繼承
    this.age = age;
}
8. 補全代碼,實現(xiàn)繼承
function Person(name, sex){
    // todo ...
}

Person.prototype.getName = function(){
    // todo ...
};    

function Male(name, sex, age){
   //todo ...
}

//todo ...
Male.prototype.getAge = function(){
    //todo ...
};

var ruoyu = new Male('若愚', '男', 27);
ruoyu.printName();
    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.getAge();

本文歸作者和饑人谷所有##

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末默蚌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绸吸,更是在濱河造成了極大的恐慌,老刑警劉巖锦茁,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攘轩,死亡現(xiàn)場離奇詭異码俩,居然都是意外死亡,警方通過查閱死者的電腦和手機稿存,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓣履,“玉大人率翅,你說我怎么就攤上這事拂苹√等鳎” “怎么了瓢棒?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長脯宿。 經(jīng)常有香客問我念颈,道長连霉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任跺撼,我火速辦了婚禮,結(jié)果婚禮上歉井,老公的妹妹穿的比我還像新娘柿祈。我一直安慰自己,他們只是感情好哩至,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布躏嚎。 她就那樣靜靜地躺著,像睡著了一般菩貌。 火紅的嫁衣襯著肌膚如雪卢佣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天箭阶,我揣著相機與錄音虚茶,去河邊找鬼。 笑死仇参,一個胖子當(dāng)著我的面吹牛媳危,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冈敛,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼待笑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抓谴?” 一聲冷哼從身側(cè)響起暮蹂,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎癌压,沒想到半個月后仰泻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡滩届,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年集侯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡棠枉,死狀恐怖浓体,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辈讶,我是刑警寧澤命浴,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站贱除,受9級特大地震影響生闲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜月幌,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一碍讯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扯躺,春花似錦捉兴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钦无,卻和暖如春逗栽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背失暂。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工彼宠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凭峡。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓决记,卻偏偏與公主長得像,于是被迫代替她去往敵國和親系宫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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