对象文字连接字符串属性

时间:2013-01-15 17:32:51

标签: javascript

我正在使用Javascript Object文字,但我无法连接字符串属性。

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

的链接

请帮忙, 提前致谢

3 个答案:

答案 0 :(得分:4)

您无法以这种方式访问​​baseURL。那是因为this实际上是window而它可能没有属性baseURL

您可以使用立即调用的函数表达式(IIFE)和闭包:

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

答案 1 :(得分:1)

问题不是在对象的上下文中连接,而是你正在寻找的 this 还不存在。一个简单的解决方案可能看起来像 this

var baseURL = "http://www.domain.com/";
var cart  = {
baseURL   : baseURL,
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";
};

答案 2 :(得分:0)

变量“this”是Window的一个实例,因此你不能将“this”用作“cart”