[英]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:對象不是函數。
看來沒有用原型定義的方法被導出。 我在這里做錯了什么?
我真的很難理解為什么按原樣編寫頂部代碼(命名屬性與其中的函數名稱相同)
我的建議是注銷一些變量以查看其值。
即: kal
, typeof kal
, typeof 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.