1

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

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

请任何帮助,在此先感谢

4

3 回答 3

4

您无法以baseURL这种方式访问​​。那是因为thisis 实际上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"
   };
}();
于 2013-01-15T17:35:49.117 回答
1

问题不在于对象上下文中的串联,而是您要查找的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";
};
于 2013-01-15T17:39:03.030 回答
0

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

于 2013-01-15T17:39:24.747 回答