如何使用'new'从另一个函数/对象中的函数创建对象

时间:2014-03-25 12:56:14

标签: javascript api tizen-web-app

我正在尝试创建一个扩展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”?

2 个答案:

答案 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访问它。