我有代码的许多块看起来像这样:的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函数实例,它们在某些情况下返回值并在其他情况下返回没有值。尽管是合法的,但这样的代码几乎肯定代表编程错误。' –