在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ js 中的存取器屬性get set可以用來干嘛呢?實(shí)際項(xiàng)目中可以用作什么功能上

js 中的存取器屬性get set可以用來干嘛呢?實(shí)際項(xiàng)目中可以用作什么功能上呢

clipboard.png

回答
編輯回答
乖乖瀦

Acceesor機(jī)制,一些MVVM框架就是通過gettersetter來使用響應(yīng)式的

var binding = {
    newAge: 12,
};
var obj = {
    get newAge() {
        return binding.newAge;
    },
    set newAge(value) {
        binding.newAge = value;
        // 這里可以執(zhí)行一些操作,比如叫綁定的指令觸發(fā)update
    }
}
2017年1月25日 08:36
編輯回答
失魂人

get/set訪問器不是對(duì)象的屬性,而是屬性的特性。大家一定要分清楚。特性只有內(nèi)部才用,因此在javaScript中不能直接訪問他們。
訪問器屬性屬性——不包含數(shù)據(jù)值,包含一個(gè)getter和setter函數(shù)(這兩個(gè)函數(shù)不是必須的)
訪問器屬性也有描述其行為的四個(gè)特性: [[Configurable]]:是否可配置,[[Enumerable]]:是否可枚舉,[[Get]]:在讀取屬性時(shí)調(diào)用的函數(shù),默認(rèn)是undefined,[[Set]]:在寫入屬性時(shí)調(diào)用的函數(shù),默認(rèn)是undefined

 
只聲明了get pro(){}屬性 可讀不可寫;
只聲明 set pro(){}屬性可寫不可讀。
如果都不聲明,屬性可讀可寫;
如果都聲明就按照,get set 定義的方法,讀寫;
如果都聲明了,但是定義的讀寫方法不能正確讀寫,get/set失效。變成默認(rèn)的可讀可寫
在prototype里面定義的value屬性,定義了get 特性。依然可以控制value屬性的讀寫 。也就是說obj.value訪問屬性時(shí),會(huì)調(diào)用get方法,先在對(duì)象本身尋找,如果沒有,再到prototype尋找,如果都沒有才算沒有定義,默認(rèn)的既可讀又可寫。

2018年8月13日 20:21
編輯回答
放開她

mvvm框架的實(shí)現(xiàn)原理之一:數(shù)據(jù)劫持就是用get set來做的。

2017年11月26日 19:22
編輯回答
夢(mèng)若殤

個(gè)人感覺類似c++等其他語言的運(yùn)算符重載,不過是有限度的,即對(duì)于存取行為只能控制而不能移除

2017年1月8日 05:07
編輯回答
舊螢火

存取器一般用來封裝的,控制存取行為。
直接拿你上面這個(gè)圖舉例,比如你需要控制年齡不小于18歲,就可以在set里面,判斷如果小于18歲就不保存。

2017年5月20日 20:29
編輯回答
女流氓

這個(gè)可以用來規(guī)范接口,甚至臨時(shí)性根據(jù)其他屬性生成一個(gè)類似屬性的值,或者反之把一個(gè)設(shè)置值轉(zhuǎn)換成一個(gè)內(nèi)置的屬性。
而且可以實(shí)現(xiàn)只寫、只讀等普通屬性值無法實(shí)現(xiàn)的特性(普通的直接屬性值都是可讀寫的)

2017年9月18日 11:52