亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

前端面試題,利用給定接口獲得閉包內部對象

前端面試題,利用給定接口獲得閉包內部對象

RISEBY 2018-08-02 20:15:49
var o = (function() {    var person = {        name: 'Vincent',        age: 24,    };    return {        run: function(k) {            return person[k];        },    }}());在不改變上面的代碼情況下, 怎么得到原有的 person 對象?假如在 person 中加上 __proto__: null,原先大家回答的方法就失效了,但此時仍舊有解,有興趣者歡迎挑戰。
查看完整描述

2 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

Object.defineProperty(Object.prototype, 'self', {

    get: function () {return this;},

    set: function (value) {return this},

    configurable: true

    // 該屬性的存在是確保該屬性可被delete方法刪除

});


var person = o.run('self');

delete Object.prototype.self;

//由于不推薦使用prototype來擴展自己定義的屬性(擴展標準規定的除外),這里把擴展再去掉。

這里面的用到的都是共有方法,不是__xxx__這種更為私有的方法(__xxx__)這種可能在不同瀏覽器里的實現不一樣。

查看完整回答
反對 回復 2018-08-05
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

Object.prototype.__defineGetter__('get', function(){

    return this;

});



console.log(o.run('get'));


查看完整回答
反對 回復 2018-08-05
  • 2 回答
  • 0 關注
  • 1179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號