5

thisこの単純な例で(the )への参照を作成する方法はobj? (そして、この正確なケースでは、obj.literal を使用)?

http://jsfiddle.net/YFeGF/

var obj = {

  planet : "World!",    // ok, let's use this planet!
  text : {
       hi: "Hello ",
       pl: this.planet  // WRONG scope... :(
  },
  logTitle : function(){                               
     console.log( this.text.hi +''+ this.planet ); // here "this" works !
  }

};


obj.logTitle(); // WORKS! // "Hello World!"
console.log( obj.text.hi +''+ obj.text.pl ); // NO DICE // "Hello undefined"

私も作ってみましたが、内部オブジェクト内でthat : this,再び未定義ですthat

4

1 に答える 1

4

オブジェクトリテラルを使用せず、関数アプローチを使用し、

var Obj = function(){
  var self = this; //store self reference in a variable
  self.planet = "World!",    // ok, let's use this planet!
  self.text = {
       hi: "Hello ",
       pl: self.planet 
  };
  self.logTitle = function(){                               
     console.log( self.text.hi +''+ self.planet ); 
  }
};

var obj = new Obj();
console.log( obj.text.hi +''+ obj.text.pl );
obj.logTitle();

ここで jsfiddle が動作しています: http://jsfiddle.net/cettox/RCPT5/

Object Oriented Javascript に関するこの素晴らしい MDN 記事も読んでください。

于 2013-09-10T11:56:22.790 に答える