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

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

有沒有辦法在 JavaScript 中代理對屬性的調用?

有沒有辦法在 JavaScript 中代理對屬性的調用?

精慕HU 2022-01-20 20:40:26
我想在 JavaScript 中向字符串添加一個計數屬性,它在內部調用長度屬性。我不想將其添加為功能。這個怎么做?"abc".count;  // 3
查看完整描述

2 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

您可以嘗試這樣做:


Object.defineProperty(String.prototype, 'count', {

  get: function() { return this.length; }

});


console.log(

  "abc".count // 3

)

但我建議您避免在 JS 中擴展現有對象。你可以在這里閱讀更多關于它的信息


查看完整回答
反對 回復 2022-01-20
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

雖然我是 ES5 的粉絲,但 ES6 帶來的一件好事終于是代理了。你不必使用它們,但它們會給你很大的靈活性和一致性:


function convertToProxy(x){

    x = Object(x);

    let proxy = new Proxy(x,{

        get: function(x,key,proxy){

            switch (key) {

                case "count":

                    return 3;

                default:

                    return function(){

                        return "hmmmm"

                    };

            }

        },

        getPrototypeOf: function(x){

            return String.prototype;

        }

    });

    return proxy;

}


let y = convertToProxy("abc");

y + "a" // "hmmmma"

y - 3 // NaN

y.count - 3 //0


查看完整回答
反對 回復 2022-01-20
  • 2 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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