国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

ecmascript 6 get set WeakMap Class static val

2024-04-27 15:16:02
字體:
供稿:網(wǎng)友

es 6 中在取值設(shè)值時會默認(rèn)調(diào)用 set get 方法:攔截即 我在調(diào)用設(shè)置值得時候自動調(diào)用 set get 方法

與 ES5 一樣, 在 Class 內(nèi)部可以使用get和set關(guān)鍵字, 對某個屬性設(shè)置存值函數(shù)和取值函數(shù), 攔截該屬性的存取行為。

es6 中寫法如下:

//get set 只是攔截了該屬性存取的行為 class objTest{ constructor(){ //this.name = 'demo' } set name(val){ this.da = val+'xxx'; } get name(){ return this.da+'get'; } } var o = new objTest(); o.name = 'test';//會調(diào)用set 方法 console.log(o.name);// testxxxget 會對get 方法進(jìn)行調(diào)用

es5 中寫法:

//es5 中的寫法var obj = { name:'qi', get name(){ return this.value+'get' }, set name(value){ //注意這里不能操作name 否則會遞歸 造成內(nèi)存溢出(設(shè)置name 的值 會調(diào)用set 再設(shè)置再調(diào)用) :Uncaught RangeError: Maximum call stack size exceeded this.value = value+'xxx' }};console.log(obj.name); //undifinedget 因調(diào)用get 打印的是value obj.name = 'QQi'; // value 此時 = qqiconsole.log(obj.name); //qqixxxget

es6 中的靜態(tài)方法:

class People { constructor(name) { //構(gòu)造函數(shù) this.name = name; } sayName() { console.log(this.name); } static formatName(name) { return name[0].toUpperCase() + name.sustr(1).toLowerCase(); }}//static 定義直接使用即可console.log(People.formatName("tom"));es6 中沒有靜態(tài)私有變量, 但是我們可以用閉包造一個,關(guān)于 WeakMap,會在下一篇博客仔細(xì)講解。 為什么要用WeakMap呢?因為WeakMap 用object作為key,并且是一個弱引用,也就是說,WeakMap對這個對象的引用并不會導(dǎo)致GA無法回收這個對象(GA計算對象引用數(shù)量的時候并不會計算弱引用)。var People = (function() { var p = new WeakMap(); class People { constructor(name) { //構(gòu)造函數(shù) var PRivateProperties = { name: name }; p.set(this, privateProperties); } sayName() { console.log(this.name); } get name() { return p.get(this).name; }}return People;})();var p = new People("tom");console.log(p.name);p.sayName();var p2 = new People("bob");console.log(p2.name);p2.sayName();

下面看下 defineProperties() , defineGetter,defineSetter,方法來自object 的原型鏈,屬性描述

https://segmentfault.com/a/1190000003882976

js創(chuàng)建對象的8種方式: https://segmentfault.com/a/1190000003862596


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 台州市| 宁武县| 赤水市| 崇左市| 仁寿县| 永兴县| 安塞县| 沙坪坝区| 南投市| 镇巴县| 蒙阴县| 寻乌县| 上虞市| 西和县| 银川市| 青神县| 县级市| 高尔夫| 吴江市| 建宁县| 射洪县| 大渡口区| 双峰县| 永州市| 富裕县| 察哈| 五华县| 中江县| 文水县| 长春市| 张家川| 彝良县| 买车| 芦溪县| 将乐县| 伊宁市| 财经| 新化县| 扶余县| 西和县| 定南县|