メンバー変数を永続化できるように、クラス インスタンスを渡そうとしています。次のコードがあります
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