Windows 8 WinJS.Binding.mixin和WinJS.Binding.dynamicObservableMixin之间有什么区别?

Windows 8 WinJS.Binding.mixin和WinJS.Binding.dynamicObservableMixin之间有什么区别?,windows-8,winjs,mixins,Windows 8,Winjs,Mixins,在WinJS中,有三种与绑定相关的混合: WinJS.Binding.com WinJS.Binding.mixin和WinJS.Binding.dynamicObservableMixin都定义了相同的混合方法。它们的定义之间的唯一区别是WinJS.Binding.mixin定义为WinJS.Binding命名空间上的不可枚举属性,而WinJS.Binding.dynamicObservableMixin定义为可枚举属性: WinJS.Namespace.define("WinJS.B

在WinJS中,有三种与绑定相关的混合:

  • WinJS.Binding.com
WinJS.Binding.mixin和WinJS.Binding.dynamicObservableMixin都定义了相同的混合方法。它们的定义之间的唯一区别是WinJS.Binding.mixin定义为WinJS.Binding命名空间上的不可枚举属性,而WinJS.Binding.dynamicObservableMixin定义为可枚举属性:

WinJS.Namespace.define("WinJS.Binding", {
    mixin: { value: dynamicObservableMixin, enumerable: false, writable: true, configurable: true },
    dynamicObservableMixin: { value: dynamicObservableMixin, enumerable: true, writable: true, configurable: true },
});

我看不到这两个mixin之间有任何真正的区别——我看不到这个属性上可枚举标志的差异的相关性。这两个词的混用在语义上或其他方面有什么区别吗?

你说得对。
mixin
dynamicObservableMixin
之间没有真正的区别。它们是一样的

WinJS.Binding.mixin
添加了addProperty、removeProperty、get/setProperty等方法,这些方法由
WinJS.Binding.expandProperties
使用。expandProperties用于使现有类可见。动态特性归因于向对象动态添加属性

例如:

var MyListViewModel = WinJS.Class.define(
    function MyListViewModel_ctor()
    {
        this._initObservable();
    },
    {
        load: function load()
        {
            var self = this;
            return serviceclient.getMyListData().then(function (records)
            {
                self.items = new WinJS.Binding.List(records);
            });
        }
    });

WinJS.Class.mix(MyListViewModel,
    WinJS.Binding.mixin,
    WinJS.Binding.expandProperties({ items: '' }));

emixin
mixin
之间存在差异<代码>通知只有
绑定
解除绑定
通知
方法。

你说得对。
mixin
dynamicObservableMixin
之间没有真正的区别。它们是一样的

WinJS.Binding.mixin
添加了addProperty、removeProperty、get/setProperty等方法,这些方法由
WinJS.Binding.expandProperties
使用。expandProperties用于使现有类可见。动态特性归因于向对象动态添加属性

例如:

var MyListViewModel = WinJS.Class.define(
    function MyListViewModel_ctor()
    {
        this._initObservable();
    },
    {
        load: function load()
        {
            var self = this;
            return serviceclient.getMyListData().then(function (records)
            {
                self.items = new WinJS.Binding.List(records);
            });
        }
    });

WinJS.Class.mix(MyListViewModel,
    WinJS.Binding.mixin,
    WinJS.Binding.expandProperties({ items: '' }));
emixin
mixin
之间存在差异
code>仅具有
bind
unbind
notify
方法