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

資訊專欄INFORMATION COLUMN

讀《javaScript高級(jí)程序設(shè)計(jì)-第6章》之理解對(duì)象

KoreyLee / 3490人閱讀

摘要:把對(duì)象定義為無(wú)序?qū)傩缘募?,其屬性可以包含基本值?duì)象或函數(shù)。接受兩個(gè)參數(shù)屬性所在的對(duì)象和要讀取其特性的屬性名返回的時(shí)其特性的對(duì)象例如讀高級(jí)程序設(shè)計(jì)這本書(shū)的第章面向?qū)ο蟮某绦蛟O(shè)計(jì),我做了篇筆記。這是第一篇,后面還有兩篇,分別是封裝類和繼承。

ECMA-262把對(duì)象定義為:無(wú)序?qū)傩缘募?,其屬性可以包含基本值、?duì)象或函數(shù)。所以,我們可以理解對(duì)象就是名值對(duì)的集合,名就是對(duì)象的每個(gè)屬性的名字,而每個(gè)名字都映射到一個(gè)值。

創(chuàng)建對(duì)象

創(chuàng)建對(duì)象有兩種方式:
方式一

var person=new Object();
person.name=“Jone”;
person.age=20;
person.job=“Software Engineer”;

person.sayName=function(){
    alert(this.name);
};

方式二

var person={
    name:”Jone”,
    age:20,
    job:“Software Engineer”,
    
    sayName:function(){
        alert(this.name);
    }
};

這兩種方式創(chuàng)建的對(duì)象都是一樣的。也可以靈活的混合使用,但要記住var person=new Object()

var person={
    name:”Jone”,
    age:20,
    job:“Software Engineer”,
    
    sayName:function(){
        alert(this.name);
    }
}

都是在為person賦值,不可重復(fù)賦值,如果重復(fù)使用就相當(dāng)于前面的值放棄,使用后來(lái)重新賦的值?;蛘哒f(shuō)都是在給person指向了一個(gè)新的地址,地址里存著新的對(duì)象。person確定是一個(gè)引用類型了,就可以在任意的地方用點(diǎn)來(lái)為它添加屬性和訪問(wèn)屬性,例如:person.sex=“女”。person用點(diǎn)訪問(wèn)時(shí)不會(huì)再為person更改指向地址,更改的是地址里存著的對(duì)象。

對(duì)象屬性的特性

對(duì)象的屬性可以分為兩種屬性:數(shù)據(jù)屬性,訪問(wèn)器屬性。兩種類型的屬性有各自的特性。

數(shù)據(jù)屬性:

[[configurable]]:表示能否通過(guò)delete刪除屬性,能否修改屬性的特性,或者能否把屬性修改為訪問(wèn)器屬性。
[[enumerable]]:表示能否通過(guò)for-in循環(huán)返回屬性。
[[writable]]:表示能否修改屬性的值。
[[value]]:包含這個(gè)屬性的數(shù)據(jù)值。讀取屬性值的時(shí)候,從這個(gè)位置讀??;寫(xiě)入屬性值的時(shí)候,把新值保存在這個(gè)位置。這個(gè)特性的默認(rèn)值是undefined。
像上面的例子那樣直接在對(duì)象上定義的屬性,它們的configurable、enumerable、writable這些特性默認(rèn)值為true。

訪問(wèn)器屬性:

[[configurable]]:表示能否通過(guò)delete刪除屬性,能否修改屬性的特性,或者能否把屬性修改為訪問(wèn)器屬性。
[[enumerable]]:表示能否通過(guò)for-in循環(huán)返回屬性。
[[get]]:在讀取屬性時(shí)調(diào)用的函數(shù)。默認(rèn)值是undefined
[[set]]:在寫(xiě)入屬性時(shí)調(diào)用的函數(shù)。默認(rèn)值是undefined
像上面的例子那樣直接在對(duì)象上定義的屬性,它們的configurable、enumerable這些特性默認(rèn)值為true。

訪問(wèn)器屬性的使用方式即:設(shè)置一個(gè)屬性的值會(huì)導(dǎo)致其他屬性發(fā)生變化。
訪問(wèn)器屬性的getset特性不能直接定義,而是使用Object.defineProperty()來(lái)定義,屬性的get、set特性和writable、value特性不能同時(shí)存在。

特性的訪問(wèn)方法:

Object.defineProperty()

例如:

var book={};
Object.defineProperty(book,”year”,{
    configurable:true,
    value:2004
});
Object.defineProperty(person,”_year”,{
    configurable:true,
    get:function(){
        return this.year;
    },
    set:function(newValue){
        if(newValue>2004){
            this.year=newValue;
        }
    }
});

創(chuàng)建一個(gè)新屬性,或修改一個(gè)屬性的特性。創(chuàng)建一個(gè)新屬性時(shí),如果不指定,configurableenumerable、writable默認(rèn)值都為falseconfigurable一旦被設(shè)置為false,就不能再把它變回true了,此時(shí),再調(diào)用Object.defineProperty()修改除writable之外的特性都會(huì)報(bào)錯(cuò)。

Object.defineProperties()

可以一次性定義多個(gè)屬性。

var book={};
Object.defineProperties(book,{
    year:{
        configurable:true,
        value:2004
    },
    _year:{
        configurable:true,
        get:function(){
            return this.year;
        },
        set:function(newValue){
            if(newValue>2004){
                this.year=newValue;
            }
        }
    }
});

Object.getOwnPropertyDescriptor()

用來(lái)讀取屬性的特性。接受兩個(gè)參數(shù):屬性所在的對(duì)象和要讀取其特性的屬性名,返回的時(shí)其特性的對(duì)象
例如:

var descriptor=Object.getOwnPropertyDescriptor(book,”year”);
            alert(descriptor.value);//2004
            alert(descriptor.configurable);//true

讀《javaScript高級(jí)程序設(shè)計(jì)》這本書(shū)的第6章面向?qū)ο蟮某绦蛟O(shè)計(jì),我做了3篇筆記。這是第一篇,后面還有兩篇,分別是封裝類和繼承。
以前一直認(rèn)為真正理解了一個(gè)問(wèn)題,你就能把它講清楚,講清楚了再把它寫(xiě)清楚就容易了,現(xiàn)在發(fā)現(xiàn)要寫(xiě)清楚真的太難了,要斟酌每句話都不是廢話,沒(méi)有歧義,盡量用少的字句等等。廢話了好久也不知道寫(xiě)清楚了嗎。
如果哪里有問(wèn)題歡迎指出。

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

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

相關(guān)文章

  • javaScript高級(jí)程序設(shè)計(jì)6繼承

    摘要:此時(shí)的原型對(duì)象包括一個(gè)指向另一個(gè)原型的指針,相應(yīng)的,另一個(gè)原型中的指向另一個(gè)構(gòu)造函數(shù)。這種關(guān)系層層遞進(jìn),就通過(guò)一個(gè)原型對(duì)象鏈接另一個(gè)構(gòu)造函數(shù)的原型對(duì)象的方式實(shí)現(xiàn)了繼承。 讀這篇之前,最好是已讀過(guò)我前面的關(guān)于對(duì)象的理解和封裝類的筆記。第6章我一共寫(xiě)了3篇總結(jié),下面是相關(guān)鏈接:讀《javaScript高級(jí)程序設(shè)計(jì)-第6章》之理解對(duì)象讀《javaScript高級(jí)程序設(shè)計(jì)-第6章》之封裝類 一...

    villainhr 評(píng)論0 收藏0
  • javaScript高級(jí)程序設(shè)計(jì)6封裝類

    摘要:創(chuàng)建構(gòu)造函數(shù)后,其原型對(duì)象默認(rèn)只會(huì)取得屬性至于其他的方法都是從繼承來(lái)的。上圖展示了構(gòu)造函數(shù)的原型對(duì)象和現(xiàn)有的兩個(gè)實(shí)例之間的關(guān)系。所有原生的引用類型都在其構(gòu)造函數(shù)的原型上定義了方法。 第6章我一共寫(xiě)了3篇總結(jié),下面是相關(guān)鏈接:讀《javaScript高級(jí)程序設(shè)計(jì)-第6章》之理解對(duì)象讀《javaScript高級(jí)程序設(shè)計(jì)-第6章》之繼承 工廠模式 所謂的工廠模式就是,把創(chuàng)建具體對(duì)象的過(guò)程抽象...

    seal_de 評(píng)論0 收藏0
  • 如何閱JavaScript高級(jí)程序設(shè)計(jì)》(一)

    摘要:題外話最近在看高級(jí)程序設(shè)計(jì)這本書(shū),面對(duì)著多頁(yè)的厚書(shū)籍,心里有點(diǎn)壓力,所以我決定梳理一下。。全局環(huán)境的關(guān)閉是頁(yè)面關(guān)閉或者瀏覽器關(guān)閉,而局部環(huán)境的關(guān)閉是指函數(shù)結(jié)束。數(shù)值范圍最大和最小的范圍是超出范圍的數(shù)字如何表示是一個(gè)特殊的值。 題外話 最近在看《JavaScript高級(jí)程序設(shè)計(jì)》這本書(shū),面對(duì)著700多頁(yè)的厚書(shū)籍,心里有點(diǎn)壓力,所以我決定梳理一下。。探究一下到底怎么讀這本書(shū)。本書(shū)的內(nèi)容好像...

    chadLi 評(píng)論0 收藏0
  • 如何閱JavaScript高級(jí)程序設(shè)計(jì)》(一)

    摘要:題外話最近在看高級(jí)程序設(shè)計(jì)這本書(shū),面對(duì)著多頁(yè)的厚書(shū)籍,心里有點(diǎn)壓力,所以我決定梳理一下。。全局環(huán)境的關(guān)閉是頁(yè)面關(guān)閉或者瀏覽器關(guān)閉,而局部環(huán)境的關(guān)閉是指函數(shù)結(jié)束。數(shù)值范圍最大和最小的范圍是超出范圍的數(shù)字如何表示是一個(gè)特殊的值。 題外話 最近在看《JavaScript高級(jí)程序設(shè)計(jì)》這本書(shū),面對(duì)著700多頁(yè)的厚書(shū)籍,心里有點(diǎn)壓力,所以我決定梳理一下。。探究一下到底怎么讀這本書(shū)。本書(shū)的內(nèi)容好像...

    jubincn 評(píng)論0 收藏0
  • 如何閱JavaScript高級(jí)程序設(shè)計(jì)》(一)

    摘要:題外話最近在看高級(jí)程序設(shè)計(jì)這本書(shū),面對(duì)著多頁(yè)的厚書(shū)籍,心里有點(diǎn)壓力,所以我決定梳理一下。。全局環(huán)境的關(guān)閉是頁(yè)面關(guān)閉或者瀏覽器關(guān)閉,而局部環(huán)境的關(guān)閉是指函數(shù)結(jié)束。數(shù)值范圍最大和最小的范圍是超出范圍的數(shù)字如何表示是一個(gè)特殊的值。 題外話 最近在看《JavaScript高級(jí)程序設(shè)計(jì)》這本書(shū),面對(duì)著700多頁(yè)的厚書(shū)籍,心里有點(diǎn)壓力,所以我決定梳理一下。。探究一下到底怎么讀這本書(shū)。本書(shū)的內(nèi)容好像...

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

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

0條評(píng)論

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