我正在尝试以下列方式创建Fabric.js对象,但由于某种原因,我被卡住了。
var object='fabric.Circle',
objects={};
objects['test1'] = new window[object]();
它将第3行中的错误称为Uncaught TypeError: undefined is not a function
,您可以在控制台中检查相同内容。
jsfiddle中的示例。
答案 0 :(得分:1)
你没有按预期获得对象。您的代码在窗口对象上查找名为fabric.Circle
的属性,而不是Circle
对象的window.fabric
属性。您可以使用以下代码执行此操作:
var object='fabric.Circle',
objects={};
objects['test1']=new getObj(object)();
function getObj(path) {
path = path.split('.');
var obj = window;
while (path.length) {
obj = obj[path.shift()];
}
return obj;
}
答案 1 :(得分:1)
您必须解析object
在这里演示:http://jsfiddle.net/L4WyP/
function getProp(prop) {
var parts = prop.split('.');
var obj = window;
do {
obj = obj[parts.shift()];
} while (parts.length);
return obj;
}
var object = 'fabric.Circle',
objects = {};
objects['test1'] = new (getProp(object))();