1

私はJSで次の機能を持っています:

function status(){
  this.functionA = function(){}
  //Some others function and fields
}

そして私は別の機能を持っています:

function create(root){
var server = libary(function (port) {
  //Here some functions
});
var returnValue = {
  current:status(),
  cur:function(port){
    current.functionA();
  }}
return returnValue;
}

を呼び出すcurrent.functionA()と、 current が未定義であると表示されます。どうすれば電話できますfunctionA()か?

4

2 に答える 2

0

のような関数コンストラクターがあるstatus()場合は、それを呼び出す必要がありますnew。ここでコードの一部を修正しました。

var returnValue = {
  current: new status(),
  cur:function(port){
    current.functionA();
  }}
return returnValue;
}

区別するためだけに; 関数内で参照するオブジェクトを実際に作成して返すためcreate()、ステートメントは必要ありません。new

于 2013-06-05T13:23:12.153 に答える
0
function status(){
  this.functionA = function(){alert("functionA");}
}
function create(root){ 
    var returnValue = {
        current:status.call(returnValue), 
        cur:function(port){ this.functionA(); }.bind(returnValue)
    } 
    return returnValue; 
}
create().cur(999);

Function プロトタイプの一部である JavaScript の「call」および「bind」メソッドを使用して問題を修正しました。

于 2013-06-05T13:35:14.317 に答える