2014-10-08 65 views
-2

我想在下面的例子中使用setter注入,它的工作原理,但我還沒有找到如何實現相同的結果,而不使用eval()。javascript setter注入沒有eval

var action = function(){}; 

action.prototype.create = function(type, name) { 
    var action = eval("this."+type); 
    action.create(name); 
}; 

action.prototype.review = { 
    create: function(name){ 
     console.log("hey "+name); 
    } 
}; 

var bang = new action(); 
bang.create('review','john'); 

我上的NodeJS v0.10

+0

[通過變量中的鍵名獲取javascript對象屬性](http://stackoverflow.com/questions/8556673/get-javascript-object-property-via-key-name-in-variable) – 2014-10-08 19:18:44

回答

2

在這種情況下運行此,eval("this."+type)應相當於this[type]

這是JSBIN example

+0

There對這個常見問題可能有數百個問題/答案。 – jfriend00 2014-10-08 18:43:00

+0

它也更安全,因爲IE8不會爲類似的保留關鍵字而感到怪異,而類,等等。 – Zenorbi 2014-10-08 18:46:10