1

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

助けてください、よろしくお願いします

4

3 に答える 3

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"
   };
}();
于 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 に答える