簡體   English   中英

prototype.Function沒有在node.js中導出

[英]prototype.Function is not being exported in node.js

我在線上找到了這個javascript Kalman過濾器庫 ,我想將其與我的node.js應用程序一起使用。 當我想將此js文件包含到我的node.js應用程序中時,我嘗試導出所需的功能(如下所示添加了module.exports)。

module.exports = {

  KalmanModel : function(){

    function KalmanModel(x_0,P_0,F_k,Q_k){
      this.x_k  = x_0;
      this.P_k  = P_0;
      this.F_k  = F_k;
      this.Q_k  = Q_k;
    }

    KalmanModel.prototype.update =  function(o){
      // code 
    }

    return KalmanModel;
  },

  KalmanObservation : function(){

    function KalmanObservation(z_k,H_k,Q_k){
      this.z_k = z_k;//observation
      this.H_k = H_k;//observation model
      this.R_k = R_k;//observation noise covariance
    }

    return KalmanObservation;
  }
};

但是當我嘗試運行以下代碼時

碼:

var kal =require('./kalman');
var observationVal = observationValues;
var x_0 = $V([observationVal[0]]);
var P_0 = $M([[2]]);
var F_k=$M([[1]]);
//process noise
var Q_k=$M([[0]]);
var KM = kal.KalmanModel(x_0,P_0,F_k,Q_k);
//value we measure
var z_k = $V([observationVal[0]]);
var H_k = $M([[1]]);
var R_k = $M([[4.482]]);
var KO = kal.KalmanObservation(z_k,H_k,R_k);

for (var i=1;i<10;i++){
z_k = $V([observationVal[i]]);
KO.z_k=z_k;
KM.update(KO);

我得到一個錯誤

TypeError:對象不是函數。

看來沒有用原型定義的方法被導出。 我在這里做錯了什么?

我真的很難理解為什么按原樣編寫頂部代碼(命名屬性與其中的函數名稱相同)

我的建議是注銷一些變量以查看其值。

即: kaltypeof kaltypeof kal.KalmanModel 另外,我認為您需要創建KalmanModel的實例才能使用原型函數,因此請嘗試:

var KM = new kal.KalmanModel(x_0,P_0,F_k,Q_k);

好吧,如果您不想對現有源代碼進行太多更改,則可以執行此操作。 不要刪除隱式函數調用,即: (function(){//code})(); 我認為你應該被設置。

module.exports = {

    KalmanModel : (function(){

        function KalmanModel(x_0,P_0,F_k,Q_k){
          this.x_k  = x_0;
          this.P_k  = P_0;
          this.F_k  = F_k;
          this.Q_k  = Q_k;
        }

        KalmanModel.prototype.update =  function(o){
          // code 
        }

        return KalmanModel;
    })(),

    KalmanObservation : (function(){

        function KalmanObservation(z_k,H_k,Q_k){
          this.z_k = z_k;//observation
          this.H_k = H_k;//observation model
          this.R_k = R_k;//observation noise covariance
        }

        return KalmanObservation;
    })()
};

或者只是將以下內容添加到庫kalman.js中

module.exports = {
    myKalmanModel : KalmanModel,
    myKalmanObservation : KalmanObservation
}

和訪問為

var KM = kal.myKalmanModel(x_0,P_0,F_k,Q_k);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM