我有一个使用大小写返回对象的函数
function GetModel(mymodel){
var mydatamodel = null;
switch(mymodel)
{
case 'Contact':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
firstName: { type: "string" },
middleName: { type: "string" },
lastName: { type: "string" }
}
});
break;
case 'Address':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
street: { type: "string" }
}
});
break;
case 'ContactType':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
name: { type: "string" }
}
});
break;
};
return mydatamodel
};
//Try to create new instance
var mymodel = new GetModel("Contact")
现在这个函数确实返回一个对象,但该对象与 使用下面的代码创建一个我需要的新对象
var mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
firstName: { type: "string" },
middleName: { type: "string" },
lastName: { type: "string" }
}
});
//Create new object;
var mymodel = new mydatamodel();
这按预期工作并创建 kendoui.datamodel 的新实例,其中 该函数返回 kendoui.data.modal... 作为函数而不是对象的新实例
我希望能够调用 switch 函数,因为我希望此代码位于不同的 .js 文件中,然后位于主 .html 页面中以进行代码分离。那么如何 我让上面的函数 GetModel 的行为方式与 var = kendoui.data.model...正在工作
谢谢
丹
最佳答案
不要在函数中使用 new 运算符。
只需让函数返回一个像这样的实例:
function GetModel(mymodel){
var mydatamodel = null;
switch(mymodel)
{
case 'Contact':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
firstName: { type: "string" },
middleName: { type: "string" },
lastName: { type: "string" }
}
});
break;
case 'Address':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
street: { type: "string" }
}
});
break;
case 'ContactType':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
name: { type: "string" }
}
});
break;
};
return new mydatamodel();
};
并像这样使用你的创建者函数:
var mymodel = GetModel("Contact");
编辑
或者使用这样的代码:
var mymodel = new (GetModel("Contact"))();
关于javascript - new Object() 不等于 new function Object 如何使它们相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14187149/