簡體   English   中英

嘗試通過不存在的鍵“立即”向JavaScript關聯數組添加新值

[英]Adding new value to javascript associative array “on the fly” when trying to get value by not existing key

嘗試通過不存在的鍵獲取值時,可以“即時”創建並返回關聯數組的新元素嗎?

a = {};
a[5]; // return "fezzes"; a = {5: "fezzs"}
a[9]; // return "jtte";  a = {5: "fezzs", 9: "jtte"}

處理未定義對象屬性的最佳方法是使用Proxy對象( 答案涵蓋了類似的用例):

a = { 1 : "hello" };

console.log(a[1]); //hello
console.log(a[2]); //undefined

var handler = {
    get: function(target, name){
        if (!(name in target)) {
            target[name] = "world";
        }
        return target[name];
    }
};

var p = new Proxy(a, handler);

console.log(a[1]); //hello
console.log(a[2]); //world

代理是(不錯的)ES6功能。 Firefox自版本18開始支持它們,而在Chrome(和Node.js)中,您必須啟用和聲標志。

您可以使用如下所示的自定義getter方法“ getProp”創建對象,並且可以根據需要訪問不存在的鍵,但是請確保不存在的鍵需要的默認值是什么

var t = Object.create({},{
                           getProp:{
                                     enumerable: false,
                                     value:function(a){
                                                        if(!this[a])this[a] =  'defaultValue'; 
                                                        return this[a];
                                   }
                          }
        });

淘汰

t.getProp('nonExistingKey') // return 'defaultValue', t return {'nonExistingKey': 'defaultValue'} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM