如何在javascript中构造对象

如何在javascript中构造对象,javascript,object,require,Javascript,Object,Require,我如何构造一个对象以允许以与条带API相同的方式进行初始化: var stripe = require("stripe")( "sk_test_BQokikJOvBiI2HlWgH4olfQ2" ); 我试过这个 var example = (function () { function example(api_token) { this.token = api_token; } example.prototype.getSelf = functio

我如何构造一个对象以允许以与条带API相同的方式进行初始化:

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)时,我得到一个
无法设置未定义的属性“token”的错误

由于函数不是作为构造函数调用的(通过
new
关键字),因此需要确保所提供的函数不会以这种方式调用

您可以这样做:

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

function example(api_token) {
    return new Example(api_token);
}
module.exports = example;
或者根本不使用构造函数,而是使用
对象。创建

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

由于您的函数不是作为构造函数调用的(通过
new
关键字),因此需要确保您提供的函数不会以这种方式调用

您可以这样做:

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

function example(api_token) {
    return new Example(api_token);
}
module.exports = example;
或者根本不使用构造函数,而是使用
对象。创建

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

不要让函数返回构造函数。或者执行
返回函数(token){returnnewexample(token);}
。不要将返回的函数设为构造函数。或者执行
returnfunction(token){returnnewexample(token);}