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(),它说当前未定义。我怎么打电话functionA()

4

2 回答 2

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);

我使用作为函数原型的一部分的 JavaScript“调用”和“绑定”方法更正了您的问题。

于 2013-06-05T13:35:14.317 回答
0

当你有一个类似的函数构造函数时status(),你需要调用new它。我在这里修改了你的部分代码。

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

只是为了区分;create()不需要new语句,因为您实际上是在函数内部创建并返回要引用的对象。

于 2013-06-05T13:23:12.153 回答