问题描述
在中间件中这么写:wechat.reply.call(this);在wechat中的reply函数是这么写的:
Wechat.prototype.reply = function(){ console.log(’bbbbb’); var content = this.body; var message = this.weixin; var xml = util.tpl(content,message) console.log(xml); this.status = 200 this.type = ’application/xml’ this.body = xml return}
然后就报错
TypeError: Cannot read property ’call’ of undefined at Object.<anonymous> (C:wwwkoawechatwechatg.js:54:16) at Generator.next (<anonymous>) at onFulfilled (C:wwwkoawechatnode_modulescoindex.js:65:19) at process._tickCallback (internal/process/next_tick.js:109:7)
话说,call函数不是在原生js中就能用吗,为什么我在调用的时候报错了呢?
而且,百度了一下,有这种错误的人特别少……问大神:通常是什么时候会报这个错?报错的原因是什么?
问题解答
回答1:举个栗子 a.call(this,null),但是此时 a 是 undefined,就会报你遇到的错误确认有 wechat.apply 这个方法么
回答2:在中间件中这么写:wechat.reply.call(this);在wechat中的reply函数是这么写的:
wechat实例应该没有值,你在调用之前打印一下看看。
console.log(wechat.reply)回答3:
如果x.call中x未定义,则其下的.call无法访问,所以你先确定一下wechat.reply是否已经定义。另外,注意在JS中,变量名是区分大小写的。