Javascript 对象文字连接字符串属性

Javascript 对象文字连接字符串属性,javascript,Javascript,我使用的是Javascript对象文本,但我不能连接字符串属性 var cart = { baseURL : "http://www.domain.com/", addURL : this.baseURL + "cart/add", deleteURL : this.baseURL + "cart/delete", totalURL : this.baseURL + "cart/total", // functions }// cart 我得到一个链接作为http://www.d

我使用的是Javascript对象文本,但我不能连接字符串属性

var cart  = {
baseURL   : "http://www.domain.com/",
addURL    : this.baseURL + "cart/add",
deleteURL : this.baseURL + "cart/delete",
totalURL  : this.baseURL + "cart/total",
// functions
}// cart
我得到一个链接作为http://www.domain.com/undefinedcart/add

请帮忙,
提前感谢

您无法通过这种方式访问baseURL。这是因为这实际上是一个窗口,它可能没有基于属性的URL

您可以改为使用立即调用的函数表达式和闭包:

var cart = function () {
   var baseURL = "http://www.domain.com/";
   return {
      addURL    : baseURL + "cart/add",
      deleteURL : baseURL + "cart/delete",
      totalURL  : baseURL + "cart/total"
   };
}();

您不能以这种方式访问baseURL。这是因为这实际上是一个窗口,它可能没有基于属性的URL

您可以改为使用立即调用的函数表达式和闭包:

var cart = function () {
   var baseURL = "http://www.domain.com/";
   return {
      addURL    : baseURL + "cart/add",
      deleteURL : baseURL + "cart/delete",
      totalURL  : baseURL + "cart/total"
   };
}();

问题不在于对象上下文中的连接,而是您要查找的对象还不存在。一个简单的解决方案可能如下所示:

或者这个:

var cart = new function() {
  this.baseURL = "http://www.domain.com/";
  this.addURL = this.baseURL + "cart/add";
  this.deleteURL = this.baseURL + "cart/delete";
  this.totalURL = this.baseURL + "cart/total";
};

问题不在于对象上下文中的连接,而是您要查找的对象还不存在。一个简单的解决方案可能如下所示:

或者这个:

var cart = new function() {
  this.baseURL = "http://www.domain.com/";
  this.addURL = this.baseURL + "cart/add";
  this.deleteURL = this.baseURL + "cart/delete";
  this.totalURL = this.baseURL + "cart/total";
};

变量this是Window的一个实例,所以不能将其用作cart

变量this是Window的一个实例,所以不能将其用作cart

可能this.baseURL未定义?@Christoph:我没有看到第二行。你是对的。错误与发布的代码没有任何共同之处。只要获得正确的url,所有操作都可以正常进行。也许这个.baseURL未定义?@Christoph:我没有看到第二行。你是对的。错误与发布的代码没有任何共同之处。仅获取正确的url即可正常工作。在您的第二个方法中,Cart尚未分配,因此其仍然未定义,而且IIFE也非常不必要。这是必需的,因为您从全局保存了环境:。感谢您的第一个注释。为了可读性,我喜欢将IIFE包装在parens:function{…}中,因此很明显它是一个表达式。在您的第二个方法中,Cart尚未赋值,因此它仍然未定义,IIFE也是非常不必要的。这是必要的,因为您从全局变量中保存了环境:。感谢您的第一条注释。为了可读性,我喜欢将IIFE包装在parens:function{…}中,因此很明显这是一个表达式。我解决了它,所以解决方案是从cart中生成baseURL,并将'this'更改为cart:var baseURL=;var cart={addURL:baseURL+cart/add,deleteURL:baseURL+cart/delete,totalURL:baseURL+cart/total,add:function{value=cart.addURL//调用购物车属性的示例},}//cartI解决了它,因此,解决方案是从cart中生成baseURL,我将'this'更改为cart:var baseURL=;var cart={addURL:baseURL+cart/add,deleteURL:baseURL+cart/delete,totalURL:baseURL+cart/total,add:function{value=cart.addURL//调用购物车属性的示例},}//cart