2011-02-05 91 views
0

我想从另一个JavaScript文件调用原型函数,但它似乎不起作用。在javascript中调用原型函数而不创建对象

BuddyList.js:

function BuddyList(){ .. } 

BuddyList.prototype = { 
    addBuddy : function(buddyName){...} 
} 

UserOptions.js:

function UserOptions(){ 
.... 
BuddyList.addBuddy(username); 
} 

我得到一个错误,指出好友列表没有一个叫addBuddy

回答

1

方法你不需要使用.prototype方法。因为一切都在JS是一个对象,你可以简单地用新的功能扩展好友列表:

function BuddyList(){ 
    // do whatever 
} 

BuddyList.addBuddy = function(username){ 
     // do whatever 
} 
0

.addBuddy是对从BuddyList构造函数构造的对象定义。

你不能像你正在尝试的那样调用一个对象的方法。

您可能希望将其创建为一个“静态”功能

BuddyList.addBuddy = function(buddyName) { ... }

然后,您可以从原型称之为藏汉

BuddyList.prototype.addBuddy = function(buddyName) { 
    BuddyList.addBuddy.apply(this, arguments) 
} 

您需要检查任何引用一个BuddyList对象在addBuddy函数里面。

还记得BuddyList是一个对象构造函数。在构造函数上调用addBuddy方法没有意义。我想你actaully要做到这一点

buddyList = new BuddyList; 
buddyList.append(someBuddy); 

从理论上讲,如果有永远只能一个好友列表,那么你可能想寻找

BuddyList = new BuddyList;

这将覆盖你的构造与继承的对象构造函数。

您可以随时通过原型直接调用addBuddy方法没有对象如下:

BuddyList.prototype.addBudy.call(this, someBuddy)

这真的取决于你的努力做的事。

相关问题