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

資訊專欄INFORMATION COLUMN

javascript 面向?qū)ο蟀鎵K之定義多個對象屬性以及讀取屬性特性

wendux / 2624人閱讀

摘要:返回值是一個對象,如果是訪問器屬性,這個對象的屬性有和如果是數(shù)據(jù)屬性,這個對象的屬性有和。上一篇面向?qū)ο蟀鎵K之對象屬性下一篇面向?qū)ο蟀鎵K之創(chuàng)建對象

這是 javascript 面向?qū)ο蟀鎵K的第三篇文章,主要講解的是多個屬性的定義以及讀取屬性的特性。前面這幾章內(nèi)容目的在于加深對對象的理解,這樣可以利于理解后面的原型鏈以及繼承方面的知識,或者你也可以了解一下不一樣的 javascript 對象屬性的定義。

定義多個屬性

在上一篇博客中已經(jīng)講解了定義一個屬性的方法,那就是 Object.defineProperty,那么在日常開發(fā)中如果要定義多個屬性呢,該使用什么樣的方法,其實可以聯(lián)想到使用 Object.defineProperties,對,就是這個方法,ECMAScript 5 定義了 Object.defineProperties() 方法,利用這個方法可以通過描述符一次定義多個屬性。這個方法接收兩個對象參數(shù):第一個對象是要添加和修改其屬性的對象,第二個對象的屬性與第一個對象中要添加或修改的屬性一一對應(yīng)。例如:

var book = {};
Object.defineProperties(book, {
  _year: {
    value: 2017
  },
  edition: {
    value: 1,
    writable: true,
  },
  year: {
    get: function () {
      return this._year;
    },
    set: function (newVal) {
      if (newVal > this._year) {
        this.edition += newVal - this._year;
      }
    }
  }
})
book.year = 2018;
console.log(book.edition); // 2

以上代碼在 book 對象上定義了兩個數(shù)據(jù)屬性( _year 和 edition )和一個訪問器屬性( year ),這里的屬性都是在同一時間創(chuàng)建的。

一樣的,在調(diào)用 Object.defineProperties() 方法時,如果不指定, configurable 、 enumerable 和writable 特性的默認值都是 false 。
讀取屬性的特性

對于讀取屬性的特性可以使用 Object.getOwnPropertyDescriptor()方法,這個方法接收兩個參數(shù):屬性所在的對象和要讀取其描述符的屬性名稱。返回值是一個對象,如果是訪問器屬性,這個對象的屬性有 configurable 、 enumerable 、 get 和 set ;如果是數(shù)據(jù)屬性,這個對象的屬性有 configurable 、 enumerable 、 writable 和 value 。例如:

var book = {};
Object.defineProperties(book, {
  _year: {
    value: 2017
  },
  edition: {
    value: 1,
    writable: true,
  },
  year: {
    get: function () {
      return this._year;
    },
    set: function (newVal) {
      if (newVal > this._year) {
        this.edition += newVal - this._year;
      }
    }
  }
})

var descriptor1 = Object.getOwnPropertyDescriptor(book, "_year");
console.log(descriptor1.value); // 2017
console.log(descriptor1.configurable); // false
console.log(typeof descriptor1.get); // undefined

var descriptor2 = Object.getOwnPropertyDescriptor(book, "edition");
console.log(descriptor2.value); // 1
console.log(descriptor2.configurable); // false
console.log(descriptor2.writable); // true

var descriptor3 = Object.getOwnPropertyDescriptor(book, "year");
console.log(typeof descriptor3.value); // undefined
console.log(descriptor3.enumerable); // false
console.log(typeof descriptor3.get); // function
console.log(typeof descriptor3.set); // function

對于數(shù)據(jù)屬性 _year , value 等于最初的值, configurable 是 false ,而 get 等于 undefined 。對于訪問器屬性 year , value 等于 undefined , enumerable 是 false ,而 get 是一個指向 getter 函數(shù)的指針。

小結(jié)

這篇文章主要講解了定義多個屬性讀取屬性的特性,分別使用了 Object.defineProperties()Object.getOwnPropertyDescriptor()方法,了解了這種定義屬性和讀取屬性的方法之后,相信你對于對象會有更加深刻地理解。

上一篇:javascript 面向?qū)ο蟀鎵K之對象屬性

下一篇:javascript 面向?qū)ο蟀鎵K之創(chuàng)建對象

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

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

相關(guān)文章

  • javascript 面向對象版塊對象屬性

    摘要:上一篇面向?qū)ο蟀鎵K之理解對象下一篇面向?qū)ο蟀鎵K之定義多個對象屬性以及讀取屬性特性 這是 javascript 面向?qū)ο蟀鎵K的第二篇文章,主要講解的是對象的屬性,首先創(chuàng)建一個對象: var person = { name: Nicholas, age: 29, job: Software Engineer, sayName: function () { conso...

    lolomaco 評論0 收藏0
  • javascript 面向對象版塊理解對象

    摘要:用代碼可以這樣描述安全到達國外面向過程既然說了面向?qū)ο?,那么與之對應(yīng)的就是面向過程。小結(jié)在這篇文章中,介紹了什么是面向?qū)ο蠛兔嫦蜻^程,以及中對象的含義。 這是 javascript 面向?qū)ο蟀鎵K的第一篇文章,主要講解對面向?qū)ο笏枷氲囊粋€理解。先說說什么是對象,其實這個還真的不好說。我們可以把自己當(dāng)成一個對象,或者過年的時候相親,找對象,那么你未來的老婆也是一個對象。我們就要一些屬性,比...

    lovXin 評論0 收藏0
  • javascript面向對象總結(jié)

    摘要:之面向?qū)ο罂偨Y(jié)前言在中是沒有類的概念的,所以它的對象與基于類的語言中的對象不同。一理解對象張三上面通過構(gòu)造函數(shù)創(chuàng)建了一個對象,并為它添加了三個屬性。 JavaScript之面向?qū)ο罂偨Y(jié) 前言:在ECMAScript中是沒有類的概念的,所以它的對象與基于類的語言中的對象不同。ECMA-262把對象總結(jié)為:無序?qū)傩缘募希鋵傩园局?、對象或者函?shù)。 一、理解對象 var person...

    taowen 評論0 收藏0
  • JavaScript基礎(chǔ)學(xué)習(xí)——面向對象部分(屬性類型)

    摘要:今天結(jié)合高編第六章開始回顧和深入學(xué)習(xí)面向?qū)ο蟛糠职▽ο笤驮玩溊^承等部分。二對象的屬性類型勾鑫宇,數(shù)據(jù)屬性訪問器屬性書上講到屬性類型時,只是簡單提了一下是為了表示對象的特性,描述了屬性的特征,并且在中不能直接訪問。 前言 JavaScript發(fā)明之始,從技術(shù)上來講就是一門面向?qū)ο蟮恼Z言,但在ES6之前,JS的很多特性和傳統(tǒng)的面向?qū)ο笳Z言有所不同,比如沒有類的概念(ES6有了clas...

    microelec 評論0 收藏0
  • javascript面向對象創(chuàng)建對象

    摘要:表示能否修改屬性的值。對于直接在對象上定義的屬性,這個特性的默認值為。默認值為設(shè)置一個屬性的值會導(dǎo)致其他屬性的變化如果的有值,就不要對再設(shè)置屬性所在的對象要讀取其描述符的屬性名稱 對象定義 對象定義:無序?qū)傩缘募?,其屬性可以包含基本值、對象或函?shù) 對象就是 鍵值對 其中值可以是數(shù)據(jù)和函數(shù) 對象方法就是對象的屬性 不過這個屬性是函數(shù) var p = new Object() p....

    bingchen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<