声明JavaScript选项对象的正确方法?

声明JavaScript选项对象的正确方法?,javascript,node.js,object,Javascript,Node.js,Object,我想访问一个用JSON响应的API。因此,我想配置一个“options”对象,它存储访问api所需的所有数据(url、令牌、id等) 以下版本有效: var Options = function (token, id) { this.token = token; this.id = id; this.host = 'http://super-cool-api.com/'; this.path = 'api/fetch/id/'; this.url = '' + this.ho

我想访问一个用JSON响应的API。因此,我想配置一个“options”对象,它存储访问api所需的所有数据(url、令牌、id等)

以下版本有效:

var Options = function (token, id) {
  this.token = token;
  this.id = id;
  this.host = 'http://super-cool-api.com/';
  this.path = 'api/fetch/id/';
  this.url = '' + this.host + this.path + this.id + '?token=' + this.token
};
var options = new Options('abc', 3);

// options.url = "http://super-cool-api.com/api/fetch/id/3?token=abc"
基本上“options.url”就是我想要的。但我尝试为“options”对象声明一个更全面的形式,如下所示:

var options = {
  token : 'abc',
  id : 3,
  host : 'http://super-cool-api.com/',
  path : 'api/fetch/id/',
  url : '' + this.host + this.path + this.id + '?token=' + this.token
};

// options.url = "undefinedundefinedundefined?token=undefined"
好的,我知道我必须以其他方式访问options.url中的值。但是怎么做呢?这是常见的做法吗

我的第一个解决方案是什么?建议这样做吗

问候,,
克里斯托夫

你展示的两种方式都是可以做到这一点的,至于最被接受/标准的方式,我真的不知道

下面是一个示例,说明如何使您演示的第二个选项正常工作:

将选项的
url
设置为构建url并返回它的函数

var options = {
    token : 'abc',
    id : 3,
    host : 'http://super-cool-api.com/',
    path : 'api/fetch/id/',
    url : function() {
        return '' + this.host + this.path + this.id + '?token=' + this.token;
    }
};
然后您可以使用以下命令检索该值:
var testUrl=options.url()


这是你们两个例子的一个例子,加上我的例子(选项3)

你们展示的两种方法都是可行的方法,至于最被接受/标准的方法,我真的不知道

下面是一个示例,说明如何使您演示的第二个选项正常工作:

将选项的
url
设置为构建url并返回它的函数

var options = {
    token : 'abc',
    id : 3,
    host : 'http://super-cool-api.com/',
    path : 'api/fetch/id/',
    url : function() {
        return '' + this.host + this.path + this.id + '?token=' + this.token;
    }
};
然后您可以使用以下命令检索该值:
var testUrl=options.url()


这是你们两个例子的一个例子,加上我的例子(选项3)

你们展示的两种方法都是可行的方法,至于最被接受/标准的方法,我真的不知道

下面是一个示例,说明如何使您演示的第二个选项正常工作:

将选项的
url
设置为构建url并返回它的函数

var options = {
    token : 'abc',
    id : 3,
    host : 'http://super-cool-api.com/',
    path : 'api/fetch/id/',
    url : function() {
        return '' + this.host + this.path + this.id + '?token=' + this.token;
    }
};
然后您可以使用以下命令检索该值:
var testUrl=options.url()


这是你们两个例子的一个例子,加上我的例子(选项3)

你们展示的两种方法都是可行的方法,至于最被接受/标准的方法,我真的不知道

下面是一个示例,说明如何使您演示的第二个选项正常工作:

将选项的
url
设置为构建url并返回它的函数

var options = {
    token : 'abc',
    id : 3,
    host : 'http://super-cool-api.com/',
    path : 'api/fetch/id/',
    url : function() {
        return '' + this.host + this.path + this.id + '?token=' + this.token;
    }
};
然后您可以使用以下命令检索该值:
var testUrl=options.url()


下面是两个示例的示例,再加上我的示例(选项3)

不幸的是,第二个示例中的
指向包含代码的对象,即不是
选项
,这就是变量未定义的原因。第一种解决方案很好,如下所示:

function makeOptions(token, id) {
    var host = 'http://super-cool-api.com/',
        path : 'api/fetch/id/';
    return {
        token: token,
        id: id,
        host: host,
        path: path,
        url: '' + host + path + id + '?token=' + token
    };
}

选择最适合您的选项。

不幸的是,第二个示例中的
指向包含代码的对象,即不是
选项
,这就是变量未定义的原因。第一种解决方案很好,如下所示:

function makeOptions(token, id) {
    var host = 'http://super-cool-api.com/',
        path : 'api/fetch/id/';
    return {
        token: token,
        id: id,
        host: host,
        path: path,
        url: '' + host + path + id + '?token=' + token
    };
}

选择最适合您的选项。

不幸的是,第二个示例中的
指向包含代码的对象,即不是
选项
,这就是变量未定义的原因。第一种解决方案很好,如下所示:

function makeOptions(token, id) {
    var host = 'http://super-cool-api.com/',
        path : 'api/fetch/id/';
    return {
        token: token,
        id: id,
        host: host,
        path: path,
        url: '' + host + path + id + '?token=' + token
    };
}

选择最适合您的选项。

不幸的是,第二个示例中的
指向包含代码的对象,即不是
选项
,这就是变量未定义的原因。第一种解决方案很好,如下所示:

function makeOptions(token, id) {
    var host = 'http://super-cool-api.com/',
        path : 'api/fetch/id/';
    return {
        token: token,
        id: id,
        host: host,
        path: path,
        url: '' + host + path + id + '?token=' + token
    };
}
选择最适合你的