概述:
每個(gè)對(duì)象的屬性,都有屬于它的屬性描述對(duì)象(下文稱為SB)。SB的作用就是來定義一個(gè)屬性的特性,比如這個(gè)屬性是否可寫,是否可遍歷等等。
本文主要涉及SB的get與set兩個(gè)屬性。
屬性除了直接定義以外,還可以用存取器定義(get與set)。其中,存值函數(shù)稱為 setter,使用屬性描述對(duì)象的set屬性;取值函數(shù)稱為 getter,使用屬性描述對(duì)象的get屬性。
一個(gè)屬性的SB默認(rèn)沒有g(shù)et與set

SB
所以,看下文...
語法:
首先來看如何設(shè)置屬性的存取器,有三種方法:
①,直接在對(duì)象中定義

第一種
②,用Object.defineProperty()方法

第二種
③,如果想修改多個(gè)屬性,用Object.defineProperties()方法

第三種
使用:
get方法會(huì)在每次讀取屬性的時(shí)候調(diào)用,你讀取到的該屬性的值為get方法的返回值!?。?/b>
當(dāng)你每次給一個(gè)屬性賦值的時(shí)候調(diào)用set方法,set方法接受一個(gè)參數(shù),參數(shù)為你賦的值!?。?/b>

get
注意:
①,一旦給屬性設(shè)置了get或set,那么你再怎么給這個(gè)屬性賦值也是徒勞(除了給set函數(shù)傳參),每次讀取該屬性,返回的都是get函數(shù)的返回值!
②,因?yàn)橐坏┰O(shè)置了get或set,則SB的value屬性不可被定義,writable屬性為false。value代表屬性的值,writable代表是否可寫。如果強(qiáng)行修改SB,則報(bào)錯(cuò)?。?!