使用敲除ViewModelBase调用或应用JavaScript

使用敲除ViewModelBase调用或应用JavaScript,javascript,knockout.js,Javascript,Knockout.js,我有一个基本视图模型: var baseViewModel = function () { var self = this; // <!----- AJAX SAVING ------!> \\ self.saving = ko.observable(); // <!----- SEARCHING ------!> \\ self.fields = ko.observableArray(); self.selectedF

我有一个基本视图模型:

var baseViewModel = function () {
    var self = this;

    // <!----- AJAX SAVING ------!> \\
    self.saving = ko.observable();

    // <!----- SEARCHING ------!> \\
    self.fields = ko.observableArray();
    self.selectedField = ko.observable();
    self.searchTerm = ko.observable().extend({ throttle: 150 });
}
而且它工作得很好。我很满意

现在,我想使用一些初始数据设置self.fields属性,这些数据要通过line baseViewModel.callthis发送,我不确定是否要执行此操作:

var viewModel = function () {
    baseViewModel.call(this, new userModel()); // just a function object
    var self = this;
}
或:

因此,baseViewModel将执行以下操作:

var baseViewModel = function (data) {
    var self = this;

    // <!----- AJAX SAVING ------!> \\
    self.saving = ko.observable();

    // <!----- SEARCHING ------!> \\
    self.fields = ko.observableArray().getKeys(data); // viewModel parameter passed here
    self.selectedField = ko.observable();
    self.searchTerm = ko.observable().extend({ throttle: 150 });
}
我已经阅读了这篇文章,但仍然不确定该去哪里,我已经阅读了官方文件

编辑

我刚刚尝试了call,因为据我所知,唯一的区别是要么用call放入一堆参数,要么用apply放入一个arg数组


到目前为止,它一直在使用调用,只是想知道选择此方法是否会有任何警告?

除非有任何警告,唯一的区别是参数是作为and数组还是单独的对象出现

通过调用,您可以执行baseViewModel.callthis[,arg1,arg2,….argn]


使用apply,您可以使用baseViewModel.apply此[,arg_array[]]

当您要传递的参数位于数组中时,您可以使用apply,因为您的userModel对象不在数组中,所以只需使用callfair即可,没有任何警告?
var viewModel = function () {
    baseViewModel.apply(this, new userModel()); // just a function object
    var self = this;
}
var baseViewModel = function (data) {
    var self = this;

    // <!----- AJAX SAVING ------!> \\
    self.saving = ko.observable();

    // <!----- SEARCHING ------!> \\
    self.fields = ko.observableArray().getKeys(data); // viewModel parameter passed here
    self.selectedField = ko.observable();
    self.searchTerm = ko.observable().extend({ throttle: 150 });
}