我有这个基本视图模型:
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 });
}
我用这个继承它:
var viewModel = function () {
baseViewModel.call(this);
var self = this;
//stufff
}
viewModel.prototype = new baseViewModel();
它完美无缺。很高兴。
现在,我想设置self.fields
属性,其中包含一些初始数据,我想通过第baseViewModel.call(this)
行发送,我不知道是否要执行此操作:
var viewModel = function () {
baseViewModel.call(this, new userModel()); // just a function object
var self = this;
}
OR:
var viewModel = function () {
baseViewModel.apply(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 });
}
我已经读过这个Difference between call and apply仍然不知道该去哪里,我已经阅读了官方文档。
修改
我刚试过call
因为据我所知,唯一的区别就是放入一堆或args(使用call
)或放入一个args数组(apply
)
到目前为止,它与call
合作,只是想知道选择这种方法是否会有任何警告?
答案 0 :(得分:0)
除非有任何警告,否则唯一的区别是args
是否为和数组或单独的对象
call
baseViewModel.call(this [, arg1, arg2, .... argn])
apply
baseViewModel.apply(this [, arg_array[] ])