第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

vue2 如何去除帶__ob__這樣的數(shù)據(jù)?

vue2 如何去除帶__ob__這樣的數(shù)據(jù)?

達(dá)令說 2018-12-19 18:18:51
data: function () {    return {        cityData: cityData,        selectedOptions:this.source[this.schema_key]    }}console上面的this.source[this.schema_key]如下[24, 81, __ob__: Observer]有么有一種方式可以直接這樣獲取這樣數(shù)據(jù)[24, 81]
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

__ob__: Observer這些數(shù)據(jù)是vue這個(gè)框架對(duì)數(shù)據(jù)設(shè)置的監(jiān)控器,一般都是不可枚舉的。


console.log這樣的打印函數(shù),被打印的變量會(huì)執(zhí)行自身的toString(),這樣,即便內(nèi)部屬性是不可枚舉,實(shí)際上也能看到。舉個(gè)例子:


const obj = {

    a: 0,

    b: 1

};

Object.defineProperty(obj, 'b', {

    writable: false,

    enumerable: false,

    configurable: false

});


console.log(obj);    // Object {a: 0, b: 1}

因?yàn)槟阋呀?jīng)將數(shù)據(jù)綁定在了vue之中,vue就肯定要為數(shù)據(jù)添加監(jiān)控器的,如果你強(qiáng)制刪掉了這些監(jiān)控器,那么這些數(shù)據(jù)也就失去了監(jiān)控,那么你使用vue的意義何在……


如果僅僅是去掉這些監(jiān)控器而不考慮后果的話,把對(duì)象復(fù)制一份就行了,因?yàn)閺?fù)制的對(duì)象是不包含不可枚舉屬性的。


const obj1 = {

    a: 0,

    b: 1

};

Object.defineProperty(obj1, 'b', {

    writable: false,

    enumerable: false,

    configurable: false

});

const obj2 = Object.assign({}, obj1);


console.log(obj2);    // Object {a: 0}

js這類動(dòng)態(tài)語言,復(fù)制對(duì)象是個(gè)很頭疼的事情。我寫了個(gè)簡(jiǎn)單的,你可以參考一下:


//對(duì)象深復(fù)制,不考慮循環(huán)引用的情況

function cloneObj(from) {

    return Object.keys(from)

        .reduce((obj, key) => (obj[key] = clone(from[key]), obj), {});

}

//數(shù)組深復(fù)制,不考慮循環(huán)引用的情況

function cloneArr(from) {

    return from.map((n) => clone(n));

}

// 復(fù)制輸入值

function clone(from) {

    if (from instanceof Array) {

        return cloneArr(from);

    } else if (from instanceof Object) {

        return cloneObj(from);

    } else {

        return (from);

    }

}


const obj = [

    {

        name: '1'

    },

    {

        name: '2'

    }

];

const obj2 = clone(obj);

console.log(obj2);

在外面直接用clone()方法就行了。


查看完整回答
反對(duì) 回復(fù) 2019-01-12
  • 1 回答
  • 0 關(guān)注
  • 766 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)