2016-02-25 31 views
0

我如何構造一個對象,以允許初始化方式與條紋API相同:如何構建對象的JavaScript

var stripe = require("stripe")(
    "sk_test_BQokikJOvBiI2HlWgH4olfQ2" 
); 

我已經試過這

var example = (function() { 
    function example(api_token) { 
     this.token = api_token; 
    } 
    example.prototype.getSelf = function (callback) { 
     //do stuff 
    }; 
    return example; 
}()); 
module.exports = example; 

但我得到一個​​致電時出錯var sdk = require('./Example')(API_KEY);

+1

不要讓你的功能返回一個構造函數。或者'返回函數(令牌){返回新的例子(令牌); }'。 –

回答

2

由於您的函數未被作爲構造函數調用(通過關鍵字new),因此您需要確保函數你所提供的並不期望被稱爲這種方式。

你可以這樣做:

function Example(api_token) { 
    this.token = api_token; 
} 
// ...prototype, etc. 

function example(api_token) { 
    return new Example(api_token); 
} 
module.exports = example; 

或者不使用構造函數所有,並使用Object.create

var exampleProto = { 
    getSelf: function() { 
     // ... 
    } 
}; 
function example(api_token) { 
    var o = Object.create(exampleProto); 
    o.token = api_token; 
    return o; 
} 
module.exports = example;