摘要:返回值是一個(gè)對(duì)象,如果是訪問器屬性,這個(gè)對(duì)象的屬性有和如果是數(shù)據(jù)屬性,這個(gè)對(duì)象的屬性有和。上一篇面向?qū)ο蟀鎵K之對(duì)象屬性下一篇面向?qū)ο蟀鎵K之創(chuàng)建對(duì)象
這是 javascript 面向?qū)ο蟀鎵K的第三篇文章,主要講解的是多個(gè)屬性的定義以及讀取屬性的特性。前面這幾章內(nèi)容目的在于加深對(duì)對(duì)象的理解,這樣可以利于理解后面的原型鏈以及繼承方面的知識(shí),或者你也可以了解一下不一樣的 javascript 對(duì)象屬性的定義。
定義多個(gè)屬性在上一篇博客中已經(jīng)講解了定義一個(gè)屬性的方法,那就是 Object.defineProperty,那么在日常開發(fā)中如果要定義多個(gè)屬性呢,該使用什么樣的方法,其實(shí)可以聯(lián)想到使用 Object.defineProperties,對(duì),就是這個(gè)方法,ECMAScript 5 定義了 Object.defineProperties() 方法,利用這個(gè)方法可以通過描述符一次定義多個(gè)屬性。這個(gè)方法接收兩個(gè)對(duì)象參數(shù):第一個(gè)對(duì)象是要添加和修改其屬性的對(duì)象,第二個(gè)對(duì)象的屬性與第一個(gè)對(duì)象中要添加或修改的屬性一一對(duì)應(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 對(duì)象上定義了兩個(gè)數(shù)據(jù)屬性( _year 和 edition )和一個(gè)訪問器屬性( year ),這里的屬性都是在同一時(shí)間創(chuàng)建的。
一樣的,在調(diào)用 Object.defineProperties() 方法時(shí),如果不指定, configurable 、 enumerable 和writable 特性的默認(rèn)值都是 false 。讀取屬性的特性
對(duì)于讀取屬性的特性可以使用 Object.getOwnPropertyDescriptor()方法,這個(gè)方法接收兩個(gè)參數(shù):屬性所在的對(duì)象和要讀取其描述符的屬性名稱。返回值是一個(gè)對(duì)象,如果是訪問器屬性,這個(gè)對(duì)象的屬性有 configurable 、 enumerable 、 get 和 set ;如果是數(shù)據(jù)屬性,這個(gè)對(duì)象的屬性有 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
對(duì)于數(shù)據(jù)屬性 _year , value 等于最初的值, configurable 是 false ,而 get 等于 undefined 。對(duì)于訪問器屬性 year , value 等于 undefined , enumerable 是 false ,而 get 是一個(gè)指向 getter 函數(shù)的指針。
小結(jié)這篇文章主要講解了定義多個(gè)屬性和讀取屬性的特性,分別使用了 Object.defineProperties() 和Object.getOwnPropertyDescriptor()方法,了解了這種定義屬性和讀取屬性的方法之后,相信你對(duì)于對(duì)象會(huì)有更加深刻地理解。
上一篇:javascript 面向?qū)ο蟀鎵K之對(duì)象屬性
下一篇:javascript 面向?qū)ο蟀鎵K之創(chuàng)建對(duì)象
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/93186.html
摘要:上一篇面向?qū)ο蟀鎵K之理解對(duì)象下一篇面向?qū)ο蟀鎵K之定義多個(gè)對(duì)象屬性以及讀取屬性特性 這是 javascript 面向?qū)ο蟀鎵K的第二篇文章,主要講解的是對(duì)象的屬性,首先創(chuàng)建一個(gè)對(duì)象: var person = { name: Nicholas, age: 29, job: Software Engineer, sayName: function () { conso...
摘要:用代碼可以這樣描述安全到達(dá)國外面向過程既然說了面向?qū)ο螅敲磁c之對(duì)應(yīng)的就是面向過程。小結(jié)在這篇文章中,介紹了什么是面向?qū)ο蠛兔嫦蜻^程,以及中對(duì)象的含義。 這是 javascript 面向?qū)ο蟀鎵K的第一篇文章,主要講解對(duì)面向?qū)ο笏枷氲囊粋€(gè)理解。先說說什么是對(duì)象,其實(shí)這個(gè)還真的不好說。我們可以把自己當(dāng)成一個(gè)對(duì)象,或者過年的時(shí)候相親,找對(duì)象,那么你未來的老婆也是一個(gè)對(duì)象。我們就要一些屬性,比...
摘要:之面向?qū)ο罂偨Y(jié)前言在中是沒有類的概念的,所以它的對(duì)象與基于類的語言中的對(duì)象不同。一理解對(duì)象張三上面通過構(gòu)造函數(shù)創(chuàng)建了一個(gè)對(duì)象,并為它添加了三個(gè)屬性。 JavaScript之面向?qū)ο罂偨Y(jié) 前言:在ECMAScript中是沒有類的概念的,所以它的對(duì)象與基于類的語言中的對(duì)象不同。ECMA-262把對(duì)象總結(jié)為:無序?qū)傩缘募希鋵傩园局怠?duì)象或者函數(shù)。 一、理解對(duì)象 var person...
摘要:今天結(jié)合高編第六章開始回顧和深入學(xué)習(xí)面向?qū)ο蟛糠职▽?duì)象原型原型鏈繼承等部分。二對(duì)象的屬性類型勾鑫宇,數(shù)據(jù)屬性訪問器屬性書上講到屬性類型時(shí),只是簡單提了一下是為了表示對(duì)象的特性,描述了屬性的特征,并且在中不能直接訪問。 前言 JavaScript發(fā)明之始,從技術(shù)上來講就是一門面向?qū)ο蟮恼Z言,但在ES6之前,JS的很多特性和傳統(tǒng)的面向?qū)ο笳Z言有所不同,比如沒有類的概念(ES6有了clas...
摘要:表示能否修改屬性的值。對(duì)于直接在對(duì)象上定義的屬性,這個(gè)特性的默認(rèn)值為。默認(rèn)值為設(shè)置一個(gè)屬性的值會(huì)導(dǎo)致其他屬性的變化如果的有值,就不要對(duì)再設(shè)置屬性所在的對(duì)象要讀取其描述符的屬性名稱 對(duì)象定義 對(duì)象定義:無序?qū)傩缘募希鋵傩钥梢园局怠?duì)象或函數(shù) 對(duì)象就是 鍵值對(duì) 其中值可以是數(shù)據(jù)和函數(shù) 對(duì)象方法就是對(duì)象的屬性 不過這個(gè)屬性是函數(shù) var p = new Object() p....
閱讀 1209·2021-11-22 12:05
閱讀 1336·2021-09-29 09:35
閱讀 630·2019-08-30 15:55
閱讀 3122·2019-08-30 14:12
閱讀 954·2019-08-30 14:11
閱讀 2875·2019-08-30 13:10
閱讀 2400·2019-08-29 16:33
閱讀 3327·2019-08-29 11:02