我正在尝试创建一个扩展Tizen功能的api。
Tizen有一种创建对象的方法,例如:'new tizen.ContactName(...)'和'addressbook = tizen.contact.getDefaultAddressBook();'。
当有很多方法和对象时,这似乎是一种很好的方法。
因此,例如我想扩展联系处理:
(外部js文件)
function ContactManager(){ //edited by comment
var self = this;
this.add = function(details, posCallback, negCallback){
//do stuff to add contact
this.otherMethod(){...}
}
等
我可以使用:var contactManager = new ContactManager();
来调用它,它可以正常工作。
现在我想通过将它包含在另一个对象(?)中来访问它,使它看起来像:var contactManager = new myTizen.ContactManager()
。
我试过了:
function myTizen(){
this.ContactManager = function(){
//methods and stuff
}
}
这不起作用。为什么?我应该如何构建我的“API”?
答案 0 :(得分:1)
我看到它就像这样
定义一些对象myTizen
然后设置myTizen.ContactManager = somefunction();
答案 1 :(得分:1)
这就是你想要的:
function myTizen() {
function whatevername() {
// methods and stuff
}
// you can even extend whatevername's prototype down here
this.ContactManager = whatevername; // please note the lack of parentheses
}
// here's another way you could do it:
function alternateMyTizen() {
}
function alternatewhatever() {
// methods and stuff
}
// extend the prototype if you choose
alternateMyTizen.prototype.ContactManager = alternatewhatever;
选项1和选项2之间的主要区别在于,在第二种方法中,您的"子类"保留在范围内,并且可以独立于myTizen类使用,在第一个方法中,一旦构造函数超出范围,您只能通过myTizen.ContactManager
访问它。