【发布时间】:2015-07-29 23:55:14
【问题描述】:
我有一个方法可以将新实例设置为动态创建的数组。如果不使用eval(),我该怎么做?
var Form = (function(){
function Form(params){
this.shapesArray = [];
this.shape;
...
}
Form.prototype.submit = function(){
... this.shape is the shape selected by the user ...
this.setShape('new Shapes.' + this.shape + '(arg1, arg2, color)');
}
Form.prototype.setShape = function(obj){
this.shapesArray.push(obj);
}
return Form;
}());
那么,如何在没有eval() 的情况下通过传递new 实例来调用setShape 方法?
目前有效:
Form.prototype.submit = function(){
eval('this.setShape(new Shapes.'+ this.shape.capitalize() +'('+ str_params + '))');
}
但是使用eval() 并不是一个好习惯。没有eval(),如何达到同样的效果?
【问题讨论】:
标签: javascript string oop object instance