未定义的javascript原型方法

时间:2016-01-22 20:23:19

标签: javascript

我试图在我的做事方法中变得更加面向对象,并且我遇到了一个错误,其中控制台说一个函数是未定义的。我不知道是怎么回事,因为我有其他运行具有相同构成的功能。

我在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

2 个答案:

答案 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