(8) 對(duì)象

對(duì)象

1. 概念

ECMA-262把對(duì)象定義為:“無序?qū)傩缘募希鋵傩钥梢园局怠?duì)象或者函數(shù)∏恳”

對(duì)象 = 屬性 + 方法

2. 創(chuàng)建對(duì)象的N中方式

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

    var obj = new Object();
    obj.name = 'Modeest';
    obj.say = function () {
        console.log('hello world');
    }
    
    console.log(obj.name);
    obj.say();
    
  2. 對(duì)象字面量模式

    var obj = {
        name: 'Modeest',
        say: function () {
            console.log('hello world');
        }
    }
    
    console.log(obj.name);
    obj.say();
    

ES6對(duì)字面量進(jìn)行了簡化

  1. 屬性名跟變量名相同,可以簡寫
  2. 方法名省略function關(guān)鍵字
var name = 'Modeest';

var obj = {
    name,
    say () {
        console.log('hello world');
    }
}
console.log(obj.name);
obj.say();
  1. 構(gòu)造函數(shù)模式

    function Person () {
        this.name = 'Modeest';
        this.say = function () {
            console.log('hello world');
        }
    }
    
    var obj = new Person();
    console.log(obj.name);
    obj.say();
    
  2. Class模式(ES6)

    class Person {
        constructor (name) {
            this.name = name;
        }
        say () {
            console.log('hello world');
        }
    }
    var obj = new Person('Modeest');
    console.log(obj.name);
    obj.say();
    

3. 注意

  1. 調(diào)用屬性

    obj.name
    
    // 等價(jià)于上面的obj.name
    var key = 'name';
    obj[key]
    
  2. 調(diào)用方法

    obj.say()
    
    // 等價(jià)于上面的obj.say()
    var key = 'say';
    obj[key]()
    

4. 優(yōu)點(diǎn)

  1. 給函數(shù)傳遞大量可選參數(shù)为黎,使用對(duì)象很方便

5. Object方法

  1. defineProperty:定義單個(gè)屬性

    var person = {};
    Object.defineProperty(person, "name", {
        writable: true,  // 是否可修改
        configurable: false, // 是否可以刪除屬性
        enumerable: true,    // 是否可以枚舉屬性
        value: 'Modeest',    // 設(shè)定name的值
        get: function () {   // 獲取name調(diào)用的鉤子
            return this.name;
        },
        set: function (newValue) {   // 修改name調(diào)用的鉤子
            if (newValue === 'Modeest') {
             this.name = 'modeest-1';
            }
        }
    })
    
    注意:
    1. 默認(rèn)情況下邮丰,上述的writable,configurable铭乾,enumerable都為false
    2. 上述屬性如果設(shè)置為false剪廉,在非嚴(yán)格模式下忽略,在嚴(yán)格模式下報(bào)錯(cuò)
    3. 定義屬性的configurable為false炕檩,再調(diào)用defineProperty修改configurable時(shí)也會(huì)直接報(bào)錯(cuò)
    
  1. Object.defineProperties():定義多個(gè)屬性

    var person = {};
    Object.defineProperties(person, {
        name: {
            value: 'modeest'
        },
        age: {
            value: 18
        }
    })
    
  2. Object.getOwnPropeertyDescriptor():讀取屬性的特性

    Object.getOwnPropeertyDescriptor(person, 'name');
    

6. 關(guān)于構(gòu)造函數(shù)

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

    this.say = function () {
        alert(this.name);
    }
}

var p = new Person('Modeest', 18);

instanceof:判斷對(duì)象是否是類的實(shí)例化對(duì)象

p instanceof Person;

此處有個(gè)面試題:判斷某個(gè)值是否是對(duì)象的方法斗蒋,多種實(shí)現(xiàn)方法

(設(shè)計(jì)模式,原型笛质,繼承)未完待續(xù)泉沾。。妇押。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跷究,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子敲霍,更是在濱河造成了極大的恐慌俊马,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肩杈,死亡現(xiàn)場離奇詭異潭袱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锋恬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來编丘,“玉大人与学,你說我怎么就攤上這事彤悔。” “怎么了索守?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵晕窑,是天一觀的道長。 經(jīng)常有香客問我卵佛,道長杨赤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任截汪,我火速辦了婚禮疾牲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衙解。我一直安慰自己阳柔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布蚓峦。 她就那樣靜靜地躺著舌剂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪暑椰。 梳的紋絲不亂的頭發(fā)上霍转,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音一汽,去河邊找鬼避消。 笑死,一個(gè)胖子當(dāng)著我的面吹牛角虫,可吹牛的內(nèi)容都是我干的沾谓。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼戳鹅,長吁一口氣:“原來是場噩夢啊……” “哼均驶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起枫虏,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤妇穴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后隶债,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腾它,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年死讹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞒滴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖妓忍,靈堂內(nèi)的尸體忽然破棺而出虏两,到底是詐尸還是另有隱情,我是刑警寧澤世剖,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布定罢,位于F島的核電站,受9級(jí)特大地震影響旁瘫,放射性物質(zhì)發(fā)生泄漏祖凫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一酬凳、第九天 我趴在偏房一處隱蔽的房頂上張望惠况。 院中可真熱鬧,春花似錦粱年、人聲如沸售滤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽完箩。三九已至,卻和暖如春拉队,著一層夾襖步出監(jiān)牢的瞬間弊知,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來泰國打工粱快, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秩彤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓事哭,卻偏偏與公主長得像漫雷,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鳍咱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350