Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:无法设置属性<;功能>;未定义的_Javascript_Node.js_Prototype - Fatal编程技术网

Javascript TypeError:无法设置属性<;功能>;未定义的

Javascript TypeError:无法设置属性<;功能>;未定义的,javascript,node.js,prototype,Javascript,Node.js,Prototype,在这里,我试图用javascript构建对象。 但我得到的运行时错误如下: TypeError: Cannot set property 'functWriteToLogFile' of undefined 我的javascript对象如下所示: function SetAstAppLog(logFolderPath,fileNamePrefix,fileSize,logStreamObject) { . . . . this.functWriteToLogFile = functio

在这里,我试图用javascript构建对象。 但我得到的运行时错误如下:

TypeError: Cannot set property 'functWriteToLogFile' of undefined
我的javascript对象如下所示:

function SetAstAppLog(logFolderPath,fileNamePrefix,fileSize,logStreamObject) {
.
.
.
.
    this.functWriteToLogFile = function (fileNamePrefix, message) {
        console.log("functWriteToLogFile " + message);
        var currLogStreamObject =  initLogPath(fileNamePrefix);
        console.log("********************");
        console.log(fileNamePrefix);
        console.log(filePath);
        currLogStreamObject.write(message + '\n');
        this.emit('written');
    };

    initLogPath(fileNamePrefix);// Set log path on creation of new object.
    this.emit('objCreated');
}
我想在以下其他功能中访问
functWriteToLogFile

SetAstAppLog.prototype.funcLogErrors = function (fileNamePrefix,errLevel,err,req) {
   //make new json object here then call functWriteToLogFile
   this.functWriteToLogFile(fileNamePrefix, JSON.stringify(logErrorObj));
};

我无法在这里找出我的错误

有人能帮我解决这个问题吗

编辑:

我按以下方式调用此函数:

var SetAstAppLog = require('astAppLog')();
var fileSize = 1024;


var objCommLogger = new SetAstAppLog(logFolderPath,logCommFilePrefix,fileSize,logCommMsg);

如果
未定义,则必须处于“严格模式”。如果您没有严格要求,那么
这个
将是全局对象,并且您不会收到错误消息,这不会有帮助


因为函数中的
this
的值是根据调用函数的方式定义的,而且很明显,您希望
this
引用从函数的
.prototype
继承的,所以应该使用
new
调用函数

var o = new SetAstAppLog(...my args...);

给定这行代码,您将立即调用模块

var SetAstAppLog = require('astAppLog')(); // <--invoking

如果
未定义,则必须处于“严格模式”。如果您没有严格要求,那么
这个
将是全局对象,并且您不会收到错误消息,这不会有帮助


因为函数中的
this
的值是根据调用函数的方式定义的,而且很明显,您希望
this
引用从函数的
.prototype
继承的,所以应该使用
new
调用函数

var o = new SetAstAppLog(...my args...);

给定这行代码,您将立即调用模块

var SetAstAppLog = require('astAppLog')(); // <--invoking

你能把你所有的代码都显示出来吗?这很奇怪。这和你的另一个问题是同一个问题。如果你在那里收到的答案不起作用,不要接受。也就是说,你最初对这个问题的回答是错误的,但现在已经被纠正了。这里的问题是您使用的答案不正确。请显示实际使用“funcLogErrors”函数的代码。您能以小提琴的形式显示所有代码吗?这很奇怪。这和你的另一个问题是同一个问题。如果你在那里收到的答案不起作用,不要接受。也就是说,你最初对这个问题的回答是错误的,但现在已经被纠正了。这里的问题是您使用的答案不正确。请显示实际使用“funcLogErrors”函数的代码。请查找我更新的问题。这里我使用new关键字调用函数。@user2625690:您遗漏了一些内容。如果您使用
new
,则
this
的值将不会
未定义
@user2625690:不知道模块的结构,我所能确定的是有限的。但由于某些原因,您正在立即调用该模块<代码>var SetAstAppLog=require('astAppLog')()为什么你有最后的帕伦?如果模块返回一个函数,这将调用它,并给出错误,假设这是您想要的构造函数func。如果不需要调用尾随参数,请删除它
var SetAstAppLog=require('astAppLog')/*此处无参数*/请找到我更新的问题。这里我使用new关键字调用函数。@user2625690:您遗漏了一些内容。如果您使用
new
,则
this
的值将不会
未定义
@user2625690:不知道模块的结构,我所能确定的是有限的。但由于某些原因,您正在立即调用该模块<代码>var SetAstAppLog=require('astAppLog')()为什么你有最后的帕伦?如果模块返回一个函数,这将调用它,并给出错误,假设这是您想要的构造函数func。如果不需要调用尾随参数,请删除它
var SetAstAppLog=require('astAppLog')/*此处无参数*/