WinJS.Class.define() - 引用构造函数中的成员函数

时间:2014-06-12 19:40:14

标签: class constructor winjs

我有一个如下定义的WinJS类,并希望在构造函数中使用成员函数:

WinJS.Class.define(
    function() {
        setInterval(myMemberFunction, 100);
    },
    { // Member variables
        myMemberFunction: function() {
            // Do something
        }
    });

不幸的是,我似乎无法在构造函数中以这种方式解析成员函数。这段代码都存在于一个模块中,因此我可以将myMemberFunction移动到层次结构中并从构造函数中访问它,但缺点是"这个"将不再引用我的WinJS类的实例。从构造函数访问WinJS中的实例成员的推荐方法是什么?

1 个答案:

答案 0 :(得分:1)

一般来说,您可以使用“this”来引用任何方法或属性,如this.myProperty。对于事件处理程序,您需要确保在处理程序中看到的“this”是实例“this”。这是函数对象的bind方法的目的。所以你这样做:

setInterval(this.myMemberFunction.bind(this), 100);

这确保您将正确的“this”实例绑定到回调。因为我经常看到这个问题经常弹出(使用.bind遍布Windows SDK示例),我在http://www.kraigbrockschmidt.com/2012/11/28/purpose-function-dot-bind/上更详细地写了这个。

请注意,这是纯JavaScript; WinJS或Windows应用商店应用程序并不特别。

相关问题