成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

寫出幾種創(chuàng)建對(duì)象的方式,并說(shuō)說(shuō)他們的區(qū)別是什么?

BLUE / 2813人閱讀

摘要:直接通過(guò)構(gòu)造函數(shù)創(chuàng)建一個(gè)新對(duì)象。工廠模式優(yōu)點(diǎn)是可以解決創(chuàng)建多個(gè)相似對(duì)象的問(wèn)題,缺點(diǎn)是無(wú)法識(shí)別對(duì)象的類型。寄生構(gòu)造函數(shù)模式除了使用操作符,其他的和工廠函數(shù)一樣,可以為對(duì)象創(chuàng)建構(gòu)造函數(shù)。

new Object()

直接通過(guò)構(gòu)造函數(shù)創(chuàng)建一個(gè)新對(duì)象。

var obj = new Object()
//等同于 var obj = {}

使用字面量的方式更簡(jiǎn)單,其實(shí)他倆是一樣的。
優(yōu)點(diǎn)是足夠簡(jiǎn)單,缺點(diǎn)是每個(gè)對(duì)象都是獨(dú)立的。

工廠模式
function createObj(name,age){
    var obj = {};
    obj.name=name;
    obj.age=age;
    return obj
}
var Anson = createObj("Anson", 18)
console.log(Anson)
//{name: "Anson", age: 18}

優(yōu)點(diǎn)是 可以解決創(chuàng)建多個(gè)相似對(duì)象的問(wèn)題,缺點(diǎn)是 無(wú)法識(shí)別對(duì)象的類型。

構(gòu)造函數(shù)
function Person(name,age){
    this.name =name;
    this.age=age;
    this.sayName =function (){ alert(this.name) }
}
var person = new Person("小明",13);
console.log(person);
//Person?{name: "小明", age: 13, sayName: ?}

優(yōu)點(diǎn)是 可以創(chuàng)建特定類型的對(duì)象,缺點(diǎn)是 多個(gè)實(shí)例重復(fù)創(chuàng)建方法

(構(gòu)造函數(shù)+原型)組合模式
function Person(name, age){
    this.name = name;
    this.age = age;
    Person.prototype.sayName = function (){ alert(this.name) }
 }
var person = new Person("小白",18)
console.log(person);
//Person {name: "小白", age: 18} __proto__ -> sayName: ? ()

優(yōu)點(diǎn) 多個(gè)實(shí)例引用一個(gè)原型上的方法 比較常用

動(dòng)態(tài)原型
function Person(name,age){
    this.name=name
    this.age =age
    if(typeof this.sayName != "function"){
        Person.prototype.sayName = function(){ alert(this.name) }
  }
}
var person = new Person("小紅",15)
console.log(person);
//Person?{name: "小紅", age: 15} 動(dòng)態(tài)創(chuàng)建sayName: ? ()

優(yōu)點(diǎn) 可以判斷某個(gè)方法是否有效,來(lái)決定是否需要初始化原型,if只會(huì)在僅在碰到第一個(gè)實(shí)例調(diào)用方法
時(shí)會(huì)執(zhí)行,此后所有實(shí)例共享此方法,需要注意的一點(diǎn)是,不能重新原型對(duì)象。

寄生構(gòu)造函數(shù)模式
function Person(name,age,job){
    var o=new Object();
    o.name=name;
    o.age=age;
    o.job=job;
    o.sayName=function(){
        console.log(this.name)
    }
    return o;
}
var friend=new Person("her",18,"Front-end Engineer");
friend.sayName();
//her

除了使用new操作符,其他的和工廠函數(shù)一樣,可以為對(duì)象創(chuàng)建構(gòu)造函數(shù)。

穩(wěn)妥模式
function Person(name, age){
    var o={};
    o.sayName=function(){ alert(name) }
    return o;
}
var person = ("小亮",24);
person.sayName();//’小亮‘

除了使用person.sayName()之外 ,沒(méi)有辦法在訪問(wèn)到name的值,適合在某些安全執(zhí)行環(huán)景下使用。

Object.create()
const person = {
  isHuman: false,
  printIntroduction: function () {
    console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`);
  }
};

const me = Object.create(person);

me.name = "Matthew"; // "name" is a property set on "me", but not on "person"
me.isHuman = true; // inherited properties can be overwritten

me.printIntroduction();
// expected output: "My name is Matthew. Am I human? true"

傳入一個(gè)原型對(duì)象,創(chuàng)建一個(gè)新對(duì)象,使用現(xiàn)有的對(duì)象來(lái)提供新創(chuàng)建的對(duì)象的__proto__,實(shí)現(xiàn)繼承。

參考:《JavaScript高級(jí)程序設(shè)計(jì)第三版》、MDN

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

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

相關(guān)文章

  • 前端面試每日3+1(周匯總2019.08.11)

    摘要:前端面試每日題,以面試題來(lái)驅(qū)動(dòng)學(xué)習(xí),每天進(jìn)步一點(diǎn)讓努力成為一種習(xí)慣,讓奮斗成為一種享受相信堅(jiān)持的力量項(xiàng)目地址推薦歡迎跟一起折騰前端,系統(tǒng)整理前端知識(shí),目前正在折騰,打算打通算法與數(shù)據(jù)結(jié)構(gòu)的任督二脈。 《論語(yǔ)》,曾子曰:吾日三省吾身(我每天多次反省自己)。 前端面試每日3+1題,以面試題來(lái)驅(qū)動(dòng)學(xué)習(xí),每天進(jìn)步一點(diǎn)! 讓努力成為一種習(xí)慣,讓奮斗成為一種享受!相信 堅(jiān)持 的力量!??! 項(xiàng)目...

    Baoyuan 評(píng)論0 收藏0
  • 前端面試每日3+1(周匯總2019.08.11)

    摘要:前端面試每日題,以面試題來(lái)驅(qū)動(dòng)學(xué)習(xí),每天進(jìn)步一點(diǎn)讓努力成為一種習(xí)慣,讓奮斗成為一種享受相信堅(jiān)持的力量項(xiàng)目地址推薦歡迎跟一起折騰前端,系統(tǒng)整理前端知識(shí),目前正在折騰,打算打通算法與數(shù)據(jù)結(jié)構(gòu)的任督二脈。 《論語(yǔ)》,曾子曰:吾日三省吾身(我每天多次反省自己)。 前端面試每日3+1題,以面試題來(lái)驅(qū)動(dòng)學(xué)習(xí),每天進(jìn)步一點(diǎn)! 讓努力成為一種習(xí)慣,讓奮斗成為一種享受!相信 堅(jiān)持 的力量?。?! 項(xiàng)目...

    馬永翠 評(píng)論0 收藏0
  • 史上最全阿里 Java 面試題總結(jié)

    摘要:以下為大家整理了阿里巴巴史上最全的面試題,涉及大量面試知識(shí)點(diǎn)和相關(guān)試題。的內(nèi)存結(jié)構(gòu),和比例。多線程多線程的幾種實(shí)現(xiàn)方式,什么是線程安全。點(diǎn)擊這里有一套答案版的多線程試題。線上系統(tǒng)突然變得異常緩慢,你如何查找問(wèn)題。 以下為大家整理了阿里巴巴史上最全的 Java 面試題,涉及大量 Java 面試知識(shí)點(diǎn)和相關(guān)試題。 JAVA基礎(chǔ) JAVA中的幾種基本數(shù)據(jù)類型是什么,各自占用多少字節(jié)。 S...

    winterdawn 評(píng)論0 收藏0
  • React 328道最全面試題(持續(xù)更新)

    摘要:希望大家在這浮夸的前端圈里,保持冷靜,堅(jiān)持每天花分鐘來(lái)學(xué)習(xí)與思考。 今天的React題沒(méi)有太多的故事…… 半個(gè)月前出了248個(gè)Vue的知識(shí)點(diǎn),受到很多朋友的關(guān)注,都強(qiáng)烈要求再出多些React相前的面試題,受到大家的邀請(qǐng),我又找了20多個(gè)React的使用者,他們給出了328道React的面試題,由我整理好發(fā)給大家,同時(shí)發(fā)布在了前端面試每日3+1的React專題,希望對(duì)大家有所幫助,同時(shí)大...

    kumfo 評(píng)論0 收藏0
  • 2019前端面試那些事兒

    摘要:雖然今年沒(méi)有換工作的打算但為了跟上時(shí)代的腳步還是忍不住整理了一份最新前端知識(shí)點(diǎn)知識(shí)點(diǎn)匯總新特性,語(yǔ)義化瀏覽器的標(biāo)準(zhǔn)模式和怪異模式和的區(qū)別使用的好處標(biāo)簽廢棄的標(biāo)簽,和一些定位寫法放置位置和原因什么是漸進(jìn)式渲染模板語(yǔ)言原理盒模型,新特性,偽 雖然今年沒(méi)有換工作的打算 但為了跟上時(shí)代的腳步 還是忍不住整理了一份最新前端知識(shí)點(diǎn) 知識(shí)點(diǎn)匯總1.HTMLHTML5新特性,語(yǔ)義化瀏覽器的標(biāo)準(zhǔn)模式和怪...

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

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

0條評(píng)論

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