我的的json屬性的拼接方法

今天遇到了一個比較困惑的問題,當我在寫閉包的時候閉包

var t = {test :{color : 'red'}}
  
    function setTable(n){ //n爲對象的屬性
        return {
           color : t.n.color
        }
    }
    var test = setTable('test');//color is not defined

寫的時候發現了一個問題,函數中對象的屬性並不能直接使用參數,t.n被直接視爲 t 中的 value 爲 'n'的 key ,如:函數

console.log(t.n) //undefined
  s = { n : 1} 
  console.log(s.n)//1

後來想到了用 eval()的方法,測試

console.log(eval('t'))//{test{color:red}}

測試發現:eval('t') 等同於 t;
推測 eval("t."+'test')也就等同於 t.test;
那麼code

function setTable(n){ //n爲對象的屬性
        var s = eval('t.'+n);
        return {
            color : s.color
        }
    }
    var test= setTable('test');//{color : red}

剛剛看到 hughw 這位朋友的提醒,爲了避免由於個人思路而誤導你們,借用他說的方法將代碼整理出來:對象

function setTable(n){ //n爲對象的屬性
        return {
            color : t[n].color
        }
    }
var test= setTable('test');//{color : red}
相關文章
相關標籤/搜索