为什么ko.utils.extend
不会覆盖this.selectItem
?在这里它始终显示1的警报。
var ViewModel = function () {
this.selectItem = function () { alert(1) };
};
}
ko.utils.extend(ViewModel.prototype, {
selectItem: function () {
alert("from extend");
}
答案 0 :(得分:3)
extend
没有覆盖它的原因是它不是原型属性。它是构造函数添加到实例的属性,它隐藏(隐藏)原型属性。
以下是发生的顺序(注意 - 我修复了问题代码中的语法错误,并添加了视图模型的实例化):
// 1 - the `ViewModel` function is created, along with `ViewModel.prototype`
var ViewModel = function () {
// 4 - the instance gets its own `selectItem` property
this.selectItem = function () { alert(1) };
};
// 2 - `selectItem` is added to `ViewModel.prototype`
ko.utils.extend(ViewModel.prototype, {
selectItem: function () {
alert("from extend");
}
});
// 3 - an instance is created; its underlying prototype is set from `ViewModel.prototype`
var vm = new ViewModel();