Object.defineProperty()死循環(huán)的問題

Object.defineProperty() 方法會直接在一個對象上定義一個新屬性衡查,或者修改一個對象的現(xiàn)有屬性,并返回此對象必盖。
語法:

Object.defineProperty(obj, prop, descriptor)

obj:要定義屬性的對象
prop:要定義或修改的屬性的名稱或 Symbol
descriptor:要定義或修改的屬性描述符

image.png

數(shù)據(jù)描述符:

            
            let obj = {}
            Object.defineProperty(obj, 'name', {
                value: 1,
            })
            console.log(obj.name)//1
            obj.name = 'zqf'
            console.log(obj.name)//1
            
            let obj = {}
            Object.defineProperty(obj, 'name', {
                value: 1,
                writable: true
            })
            console.log(obj.name)//1
            obj.name = 'zqf'
            console.log(obj.name)//zqf

存取描述符:

           
            let obj = {
                initValue: '1',
            }
            Object.defineProperty(obj, 'name', {
                get(){
                    return obj.initValue
                },
                set(value) {
                    obj.initValue = value
                }
            })
            console.log(obj.name)
            obj.name = 'zqf'
            console.log(obj.name)
            

使用存取描述符遇到的問題:
當Object.defineProperty設置的prop和obj原有的prop相同時會造成死循環(huán)拌牲,如下面的initValue屬性

            let obj = {
                initValue: '1',
            }
            Object.defineProperty(obj, 'initValue', {
                get(){
                    return obj.initValue
                },
                set(value) {
                    obj.initValue = value
                }
            })
            console.log(obj.initValue)
            obj.initValue = 'zqf'
            console.log(obj.initValue)

原因:
console.log(obj.initValue)觸發(fā)get方法,return obj.initValue再次觸發(fā)get方法
obj.initValue = 'zqf'觸發(fā)set方法歌粥,obj.initValue = value再次觸發(fā)set方法

詳細的說明請看MDN文檔

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末塌忽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子失驶,更是在濱河造成了極大的恐慌土居,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異擦耀,居然都是意外死亡棉圈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門眷蜓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來分瘾,“玉大人,你說我怎么就攤上這事吁系〉抡伲” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵垮抗,是天一觀的道長氏捞。 經(jīng)常有香客問我,道長冒版,這世上最難降的妖魔是什么液茎? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮辞嗡,結果婚禮上捆等,老公的妹妹穿的比我還像新娘。我一直安慰自己续室,他們只是感情好栋烤,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挺狰,像睡著了一般明郭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丰泊,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天薯定,我揣著相機與錄音,去河邊找鬼瞳购。 笑死话侄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的学赛。 我是一名探鬼主播年堆,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盏浇!你這毒婦竟也來了变丧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤绢掰,失蹤者是張志新(化名)和其女友劉穎锄贷,沒想到半個月后译蒂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谊却,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年柔昼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炎辨。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡捕透,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碴萧,到底是詐尸還是另有隱情乙嘀,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布破喻,位于F島的核電站虎谢,受9級特大地震影響,放射性物質發(fā)生泄漏曹质。R本人自食惡果不足惜婴噩,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望羽德。 院中可真熱鬧几莽,春花似錦、人聲如沸宅静。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姨夹。三九已至纤垂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磷账,已是汗流浹背峭沦。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留够颠,地道東北人熙侍。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓榄鉴,卻偏偏與公主長得像履磨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子庆尘,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349