2013-11-22 35 views

回答

1

您沒有按照預期得到對象。您的代碼將在窗口對象上查找名稱爲fabric.Circle的屬性,而您需要window.fabric對象的Circle屬性。你可以用下面的代碼做到這一點:

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; 
} 

DEMO:http://jsbin.com/ABIgoMiR/1/edit

+0

由於它工作正常,什麼是變種的'意義的obj = window' +1 –

+0

您使用'obj'變量通過對象鏈進行迭代。 'var obj = window;'是初始化,'obj = obj [..]'是迭代。所以在進入'obj'之前將會是'window'。第一次迭代'obj'將會是'window.fabric'。第二次迭代'obj'將是'window.fabric.Circle'。 'window'是全局對象,所有全局變量都可以作爲全局對象的屬性來訪問。 – Tibos

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))(); 
+0

感謝它工作正常'var obj = window' +1對於你的答案有什麼意義 –

+0

@Thirumalaimurugan'obj'擁有必須讀取屬性的對象。它被初始化爲'window'以便能夠檢索全局定義(比如'fabric')。如果這個答案是你正在尋找的,請隨時批准它。 – Florent

相關問題