www說
2019-03-01 18:22:48
最近在狂補(bǔ)js的底層知識,在對象這一塊,基本所有書都用了一定的篇幅去介紹屬性特性和存取器特性4種屬性特性value, writable,enumerable, configurable4種存取器特性get set enumerable, configurable那問題來了,這些東西在實際開發(fā)中有什么用呢感覺如果涉及到自己編寫框架,可能會用這寫功能去做一些限制,但如果是其他用途,很難想到什么需要去diy這些屬性的地方,所以還想請大佬們指教另,ES6里已經(jīng)有了proxy,那getter和setter還有什么用武之地嗎
2 回答

人到中年有點(diǎn)甜
TA貢獻(xiàn)1895條經(jīng)驗 獲得超7個贊
有什么用。
我實際開發(fā)中很少用這幾個屬性,但是并不意外著沒用。es 提供屬性特性,可以使對象操作的時候有更多的配置性。比如設(shè)置不可枚舉,不可改變,不可刪除的屬性。當(dāng)你遇到真實的場景,自然會派上用場。大可不必太糾結(jié)它在工作中的用場。get,set 跟 proxy 的理念是不同的。get, set 在面向?qū)ο缶幊讨惺潜容^重要的,算是提供了屬 性的接口,而上述的屬性則提供了屬性訪問的安全性。這個在其他,比如 c 語言中都是有的,算是 js 豐富自己的語言的嚴(yán)謹(jǐn)性。get,set 的用處很多,比如 vue,mobx 就用它處理了依賴收集,這個我就不必多說了,都是源碼解析。
proxy 則是類似于元編程的思想,什么是元編程?知乎看一下怎么理解元編程?。也就是說 proxy 可以做很多 get,set 做不了的事情,初衷以及維度、高度是不同的。比如 get 只能知道對象屬性被訪問了,卻不能收到任何的參數(shù)。
添加回答
舉報
0/150
提交
取消