我有代碼的許多塊看起來像這樣:的JavaScript動態地從一個類名創建類的實例
.....
var headerEl = document.createElement("div");
headerEl.id = "headerDiv";
document.body.appendChild(headerEl);
var headerBlock = new Header(headerEl);
var footerEl = document.createElement("div");
footerEl.id = "footerDiv";
document.body.appendChild(footerEl);
var footerBlock = new Footer(footerEl);
.....
現在我想創建一個函數「createBlock」,將做上面的代碼,所以我只是必須在PARAMS通過這樣
.....
var headerBlock = createBlock("headerDiv", Header);
var footerBlock = createBlock("footerDiv", Footer);
.....
我都試過,但它不工作
function createBlock (divName, className){
var myDiv = document.createElement("div")
myDiv.id = divName;
document.body.appendChild(myDiv);
var block = new className(myDiv);
return block;
}
宣佈這應該工作如果我不能編輯Header和Footer類來檢查'this'怎麼辦?在不檢查'this'的情況下,我總是會得到'undefined'。 –
然後你的函數可能會拋出一個錯誤,因爲'this'將引用null。檢查這個例子:http://jsbin.com/OWUhIBo/1/edit –
還有一件事,我使用TypeScript,所以如果我可以編輯Header,Footer類來檢查'this',TypeScript將會拋出這個編譯時錯誤:'函數'構造函數'具有不一致的返回點。此檢查報告任何JavaScript函數實例,它們在某些情況下返回值並在其他情況下返回沒有值。儘管是合法的,但這樣的代碼幾乎肯定代表編程錯誤。' –