我是js oop的新手,我不明白我是怎么做到的。
我有
var QForm;
QForm = {
initForm: function (parms) {
$.extend(this, parms);
var frmObj = $(this.formId);
this.userRestrictions(parms);
$(this.currentForm).find("a[data-form-action]").hide();
this.clearForm();
this.disableFields();
},
然后我有QForm.js
viewDidLoad
问题是,如果我在同一页面中有e对象, this.currentForm 具有最新的实例化对象的值。
QForm.js是很多方法的非常好的文件。我怎么能管理这个。感谢
答案 0 :(得分:2)
一般来说,您的代码有效,它使用Object.create
基于QForm
原型创建新实例,而新实例不共享属性,这是一个简短的工作示例:
var QForm;
QForm = {
initForm: function (parms) {
$.extend(this, parms);
this.frmObj = $(this.formId);
}
};
var cadastro = Object.create(QForm);
var options = {
myInstanceName: "Cadastro",
formId: "CadastroForm",
dependentListsMode: "one",
defaultButtons: ['enter-query', 'new']
}
cadastro.initForm(options);
var formTwo = Object.create(QForm);
var options = {
myInstanceName: "FormTwo",
formId: "test",
dependentListsMode: "one",
defaultButtons: ['enter-query', 'new']
}
formTwo.initForm(options);
alert(cadastro.formId);
alert(formTwo.formId);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如果您运行它,您会看到CadastroForm
然后test
,因此基于QForm创建的两个实例具有不同的formId
属性。