簡體   English   中英

從JavaScript對象中提取鍵並用作變量

[英]Extract keys from JavaScript object and use as variables

PHP中有一個名為extract的方法,它完全符合我想要做的。 假設我有一個看起來像這樣的對象:

var data = {
    name: "Olly"
    age: 19
};

我想運行像extract(data)這樣的方法,這樣我就可以通過使用nameage而不是data.namedata.age來訪問該對象中的屬性。

我做了一些谷歌搜索,找不到任何東西。

你可以使用這樣的東西:

function myTestFunction() {
    var data = {
        name: "Olly",
        age: 19,
    };
    for (var key in data) {
        this[key] = data[key];
    }
    alert(name +" is "+ age +"!");
}
myTestFunction();

(試試這里: http//jsfiddle.net/dHDxd/3/

甚至可以使用window[key] = data[key]將它們導出到全局命名空間。 無論如何,要非常小心,因為破壞全局命名空間/覆蓋其他東西等的風險非常高。

更新:通用extract()

function extract(data, where) {
    for (var key in data) {
        where[key] = data[key];
    }
}

function runTest() {
    var myData = { name: "Olly", age: 19, };
    extract(myData, this);
    alert(name +" is "+ age +"!");
}

runTest();

這里是更通用的/多級/循環命名空間提取器:)

function extract(rootObject, key) {
    var parts = key.split('.');
    var currentKey = parts.shift();
    return parts.length > 0 ? extract(rootObject[currentKey], parts.join('.')) : rootObject[currentKey];
}

var myObject = { a: { b: { c: 7 }}};
console.log(extract(myObject, 'a.b.c'));
console.log(extract(myObject, 'a'));

看起來它就像“with”語句。

var data = {
    name: "Olly",
    age: 19,
};
with(data){
    alert(name +" is "+ age +"!"); //"Olly is age 19!"
    name = "Charlie";
    age = 28;
    alert(data.name +" is "+ data.age +"!"); //"Charlie is age 28!"
}
alert(data.name +" is "+ data.age +"!"); //"Charlie is age 28!"

暫無
暫無

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

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