亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

javascript非構(gòu)造函數(shù)的繼承

Sunxb / 3472人閱讀

摘要:現(xiàn)在有兩個(gè)對(duì)象我們希望繼承,因?yàn)楹投际瞧胀ǖ膶?duì)象,不是構(gòu)造函數(shù),所以這里無(wú)法依賴于構(gòu)造函數(shù)的繼承。那方法是創(chuàng)建一個(gè)以某個(gè)對(duì)象為藍(lán)本而生成的對(duì)象簡(jiǎn)單粗暴地拷貝所有的屬性

現(xiàn)在有兩個(gè)對(duì)象:

Man = {
    sex: "male"
}
Student = {
    job: "student"
}

我們希望student繼承person,因?yàn)閜erson和student都是普通的對(duì)象,不是構(gòu)造函數(shù),所以這里無(wú)法依賴于構(gòu)造函數(shù)的繼承。那方法是:
1: 創(chuàng)建一個(gè)以某個(gè)對(duì)象為藍(lán)本而生成的對(duì)象

function object(parent){
    var F = function(){};
    F.prototype = parent;
    return new F();
}
var maleStudent = object(Man);
maleStudent.job = "student";
maleStudent.sex === "male";//true

2: 簡(jiǎn)單粗暴地拷貝所有的屬性

function deepCopy(parent, child){
    var child = child || {};
    for (i in parent) {
        if(typeof parent[i] === "object"){
            child[i] = parent[i].constructor === "Array"? []: {};
            deepCopy(parent[i], child[i]);
        }
        else{
            child[i] = parent[i]
        }

    }
    return child;
}

var parent = {
    color: ["red", "green"],
    name: {
        firstName: "hehe",
        lastName: "Ha"
    }

}
var child = deepCopy(parent);
child.color;// ["red", "green"]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/83518.html

相關(guān)文章

  • 對(duì)Javascript 類、原型鏈、繼承理解

    摘要:因?yàn)槲覀冇眠@個(gè)函數(shù)來(lái)構(gòu)造對(duì)象,所以我們也把稱作構(gòu)造函數(shù)。所以通過(guò)定義構(gòu)造函數(shù),就相當(dāng)于定義了一個(gè)類,通過(guò)關(guān)鍵字,即可生成一個(gè)實(shí)例化的對(duì)象。 一、序言 ??和其他面向?qū)ο蟮恼Z(yǔ)言(如Java)不同,Javascript語(yǔ)言對(duì)類的實(shí)現(xiàn)和繼承的實(shí)現(xiàn)沒(méi)有標(biāo)準(zhǔn)的定義,而是將這些交給了程序員,讓程序員更加靈活地(當(dāng)然剛開(kāi)始也更加頭疼)去定義類,實(shí)現(xiàn)繼承。(以下不討論ES6中利用class、exten...

    sevi_stuo 評(píng)論0 收藏0
  • Javascript面向?qū)ο缶幊蹋ㄈ?em>非構(gòu)造函數(shù)繼承

    摘要:原文鏈接一什么是非構(gòu)造函數(shù)的繼承比如,現(xiàn)在有一個(gè)對(duì)象,叫做中國(guó)人。通過(guò)函數(shù),繼承了。中國(guó)北京上海香港廈門北京上海香港廈門北京上海香港這時(shí),父對(duì)象就不會(huì)受到影響了。目前,庫(kù)使用的就是這種繼承方法。 原文鏈接 一、什么是非構(gòu)造函數(shù)的繼承? 比如,現(xiàn)在有一個(gè)對(duì)象,叫做中國(guó)人。 var Chinese = { nation: 中國(guó) } 還有一個(gè)對(duì)象,叫做醫(yī)生。 var Doctor = {...

    jaysun 評(píng)論0 收藏0
  • JavaScript · 原型繼承

    摘要:這樣肯定不行,給添加方法或影響到這種方式有一個(gè)缺點(diǎn),在一個(gè)實(shí)例時(shí)會(huì)調(diào)用兩次構(gòu)造函數(shù)一次是,另一次是,浪費(fèi)效率,且如果構(gòu)造函數(shù)有副作用,重復(fù)調(diào)用可能造成不良后果。 寫(xiě)在前面 此文只涉及基于原型的繼承,ES6之后基于Class的繼承請(qǐng)參考相關(guān)文獻(xiàn)。 知識(shí)儲(chǔ)備 構(gòu)造函數(shù)的兩種調(diào)用方式(結(jié)果完全不同) 通過(guò)關(guān)鍵字new調(diào)用: function Person(name) { this.n...

    Profeel 評(píng)論0 收藏0
  • JavaScript 五十問(wèn)——從源碼分析 ES6 Class 實(shí)現(xiàn)機(jī)制

    摘要:防止類的構(gòu)造函數(shù)以普通函數(shù)的方式調(diào)用。這個(gè)函數(shù)的主要作用是通過(guò)給類添加方法,其中將靜態(tài)方法添加到構(gòu)造函數(shù)上,將非靜態(tài)的方法添加到構(gòu)造函數(shù)的原型對(duì)象上。 Class是ES6中新加入的繼承機(jī)制,實(shí)際是Javascript關(guān)于原型繼承機(jī)制的語(yǔ)法糖,本質(zhì)上是對(duì)原型繼承的封裝。本文將會(huì)討論:1、ES6 class的實(shí)現(xiàn)細(xì)2、相關(guān)Object API盤點(diǎn)3、Javascript中的繼承實(shí)現(xiàn)方案盤點(diǎn)...

    LeexMuller 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<