我有以下代码:
function Tools() { }
Tools.prototype.foobar = function() {
return 'a';
};
alert(Tools.foobar());
此代码返回错误,找不到foobar
函数。为什么会这样?它没有原型关键字。
另外,有什么区别?据我所知,我可以使用prototype关键字,而不是使用它。如果它是一个对象,我可以理解它是继承,但是这里呢?
答案 0 :(得分:4)
您未在foobar
上设置属性Tools
,而是将其设置为Tools.prototype
,这意味着它将无法在Tools
上使用。如果你想在Tools
上调用它,你必须在那里设置它:
Tools.foobar = function() { ... };
alert(Tools.foobar());
prototype
的目的是指定函数实例需要包含哪些属性。因此,如果要访问这些属性,则应使用new
关键字创建该函数的新实例。
Tools.prototype.foobar = function() { ... };
var tools = new Tools();
alert(tools.foobar());