【问题标题】:javascript setter injection without eval没有 eval 的 javascript setter 注入
【发布时间】:2014-10-09 02:41:40
【问题描述】:

我正在尝试在下面的示例中使用 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 上运行它

【问题讨论】:

标签: javascript node.js dependency-injection prototype


【解决方案1】:

在这种情况下,eval("this."+type) 应该等同于 this[type]

这是JSBIN example

【讨论】:

  • 这个常见问题可能有数百个重复问题/答案。
  • 它也更安全,因为 IE8 不会对保留关键字如 for、while、class 等感到恐惧。
猜你喜欢
  • 2012-04-25
  • 1970-01-01
  • 2023-03-27
  • 2020-02-14
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多