我试图在我的做事方法中变得更加面向对象,并且我遇到了一个错误,其中控制台说一个函数是未定义的。我不知道是怎么回事,因为我有其他运行具有相同构成的功能。
我在app.js中设置了这样的对象:
var vid = new videoAPI(whichOs.type());
然后我在我的lib.js中设置我的构造函数:
function videoAPI(osParam)
{
this.os = osParam;
}
创建我的方法我遇到的问题是我的lib.js中的这个:
videoAPI.prototype.print = function()
{
return this.os;
}
然后我打电话给我的app.js
console.log(print());
我有两个使用此设置的其他函数,但我传入变量。 谁能告诉我我做错了什么?
**编辑。 它失败的线是print(); 我没有提到我在node.js项目中将两个js文件链接在一起。这是错误:
ReferenceError: print is not defined
at Object.<anonymous> (C:\Users\denis\Desktop\videoServer\app.js:36:13)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
答案 0 :(得分:1)
您需要实际调用videoAPI
实例的方法。
var vid = new videoAPI('something');
console.log(vid.print()) // returns: something
如果您在没有为videoAPI
实例变量添加前缀的情况下调用其他函数,则它们将全局存在。
答案 1 :(得分:1)
根据提供的代码,print是videoAPI对象的原型,但在控制台日志中,您只需调用print。变化:
console.log(print());
要:
console.log(vid.print());
应该解决你的问题。
编辑:看起来塞思打败了我:P