我正在尝试传递一个类实例,以便我可以保留它的成员变量。我有以下代码
var mainNamespace = WinJS.Namespace.define("MainNamespace", {
setupClass: WinJS.Class.define(
function () { },
{
createSetup: function CreateSetup() {
var interactionInst = new mainNamespace.interaction();
drawScreen.DrawScreen(interactionInst);
var backgroundProc = new
mainNamespace.createProc(interactionInst);
}
),
interaction: WinJS.Class.define(
function() {},
{
clickedPos: 0,
handleTouch: function handleTouch(event) {
this.clickedPos = event.x;
console.log("New pos: " + this.clickedPos);
}
),
createProc: WinJS.Class.define(
function (interaction) {
setInterval(this.runProc, 1000, interaction);
},
{
runProc: function runNewProc(interaction) {
console.log(interaction.clickedPos);
}
...
drawScreen
命名空间如下:
WinJS.Namespace.define("drawScreen", {
DrawScreen: WinJS.Class.define(
function DrawScreen(interaction) {
/// Do some screen set-up here
canvas.addEventListener("MSPointerUp", interaction.handleTouch, false);
}
)
});
我的问题是interaction.clickedPos
永远不会改变。为什么它没有改变,我是否以正确的方式来处理 javascript 应用程序?
编辑:
我现在已经弄清楚为什么会发生这种情况,但不知道如何解决它。interaction.handleTouch
触发时,指this
的是canvas
对象,而不是interaction
对象 - 所以我无法访问它的成员。