javascript对象文字实例化

时间:2016-02-05 18:27:44

标签: javascript oop object

我是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是很多方法的非常好的文件。我怎么能管理这个。感谢

1 个答案:

答案 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属性。