JavaScript 对象文字实例化

javascript object literal instantiation

本文关键字:实例化 文字 对象 JavaScript      更新时间:2023-09-26

我是js oop的新手,我不明白我该怎么做。

我有

var Cadastro = Object.create(QForm);
var options = {
    myInstanceName: "Cadastro",
    dependentListsMode: "one",
    defaultButtons: ['enter-query', 'new']
}
Cadastro.initForm(options);

然后我有QForm.js

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();
    },

问题是,如果我在同一页面中有 e 对象,则 this.currentForm 具有最新初始化对象的值。

QForm.js是一个非常扩展的文件,有很多方法。我该如何管理。谢谢

通常,您的代码可以正常工作,它使用 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属性。