1

入力キー押下検出イベント ハンドラー内でオブジェクト プロトタイプ関数呼び出しを渡そうとしていますが、これを行う方法がわかりません。コードを以下に示します。

function foo{};

foo.prototype.shout = function() {
  alert(shout);
}

foo.prototype.someOtherFunction = function (event) {
  var e = event || window.event,
      code = e.charCode || e.keyCode;

    if(code === 38) {
       foo.shout// This is what doesn't work - sorry for the confusion
    }
}

foo.prototype.applyKeypress = function (_input) {
  var self = this;
      _input.onkeypress = foo.someOtherFunction; // someOtherFunction applied here
}
4

2 に答える 2

2

私の投稿の数秒前に述べたように-あなたはオブジェクトを作成しませんでした

http://jsfiddle.net/Smzuu/2/

実行できるようにコードを少し変更しました。このサンプルコードを書くときに見逃した小さなこと、私は願っています

function foo(){};

foo.prototype.shout = function() {
  alert("hello"); //alert(shout); // shout was not defined.
}

var sampleInput = document.getElementById('sampleInputField');

sampleInput.onkeypress = function(e) {
    if(e.charCode === 97) { // A pressed
      new foo().shout(); 
    }
}​
于 2012-09-24T02:38:03.270 に答える
1

いいえ、オブジェクトを作成していないため、機能しません。

function foo(){};

foo.prototype.shout = function() {
  alert(shout);
}

var o = new foo();

var sampleInput = document.getElementById('sampleInputField');

sampleInput.onkeypress = function(e) {
  if(code === 38) { //up arrow press
    o.shout() //now it works because it's an object, not a constructor
  }
}
于 2012-09-24T02:33:04.657 に答える