JavaScript的setter與getter方法
以前在寫(xiě)項(xiàng)目過(guò)程一直都沒(méi)有使用過(guò)Javascript的setter與getter方法,所以對(duì)其是一種要懂不懂的概念;今天看書(shū)看到這個(gè)知識(shí)點(diǎn),還是模模糊糊的,于是就打算研究研究;
Javascript對(duì)象的屬性是由名字,值和一組特性構(gòu)成的。那么首先,來(lái)了解一下對(duì)象的兩種屬性:
數(shù)據(jù)屬性,我們經(jīng)常使用,應(yīng)該很熟悉
訪問(wèn)器屬性,也稱存取器屬性
何為存取器屬性?就是一組獲取和設(shè)置值的函數(shù)。在ECMAScript5中,屬性值可以用一個(gè)或兩個(gè)方法設(shè)置,這兩個(gè)方法就是getter和setter;因此getter和setter定義的屬性被稱為存取器屬性。
var o = {
get val(){
/*函數(shù)體*/
return ;
},
set val(n){
/*函數(shù)體*/
}
}
上面的就是一個(gè)存取器屬性定義的最簡(jiǎn)單的方法,可以看出getter和setter方法其實(shí)就是取代function的一個(gè)函數(shù)。
var o = {
a:3,
get val(){
return Math.pow(this.a,2);
}
}
console.log(o.val);//9
o.val = 100;
console.log(o.val);//9
getter方法是無(wú)參數(shù),并且有返回值的;當(dāng)單獨(dú)設(shè)置getter方法時(shí),只能獲取屬性值,無(wú)法更改其定義的屬性值的,保證了數(shù)據(jù)的安全性;
var o = {
a:3,
set val(n){
this.a = n;
}
}
console.log(o.val);//undefined
setter方法是有參數(shù),沒(méi)有返回值的;當(dāng)單獨(dú)設(shè)置setter方式時(shí),是無(wú)法讀取屬性值的;
var o ={
a:3,
get val(){
return Math.pow(this.a,n);
},
set val(n){
this.a = Math.max(this.a,n);
}
}
console.log(o.a);//3
console.log(o.val);//9
o.val = 10;
console.log(o.a);//10
console.log(o.val);//100
通過(guò)上面的代碼可以看出,其中this是指其對(duì)象(即代碼中的“o”);
var o ={
a:3,
get val(){
return Math.pow(this.a,n);
},
set val(n){
this.a = Math.max(this.a,n);
}
}
o.val = 10;
var foo = Object.create(o);
console.log(foo.val);//10
foo.val = 9;
console.log(foo.val);//10
另外,存取器屬性也是可以被繼承的;
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaScript?getter?setter金字塔???????
- JavaScript對(duì)象訪問(wèn)器Getter及Setter原理解析
- js中g(shù)etter和setter用法實(shí)例分析
- 淺談JS對(duì)象添加getter與setter的5種方法
- Javascript中的getter和setter初識(shí)
- JavaScript中setter和getter方法介紹
- JavaScript之Getters和Setters 平臺(tái)支持等詳細(xì)介紹
- JavaScript學(xué)習(xí)筆記之取值函數(shù)getter與取值函數(shù)setter詳解
相關(guān)文章
使用json對(duì)象轉(zhuǎn)化為key,value的對(duì)象數(shù)組
這篇文章主要介紹了使用json對(duì)象轉(zhuǎn)化為key,value的對(duì)象數(shù)組方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
微信小程序?qū)崿F(xiàn)禁止分享代碼實(shí)例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)禁止分享代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
簡(jiǎn)易的投票系統(tǒng)以及js刷票思路和方法
這篇文章主要介紹了簡(jiǎn)易的投票系統(tǒng)以及js刷票思路和方法,文章十分的詳盡,思路也很清晰,是篇非常不錯(cuò)的文章,這里推薦給大家,有需要的小伙伴可以參考下。2015-04-04

