0

私はここ数か月 JavaScript に取り組んでおり、オブジェクトをより深く理解しようとしています。次の問題は私にぴったりです。それを詳しく説明するのではなく、コード例を示します。

var Obj1 = function (){
    this.getResult = function() {
            var result = 5*5;
        return result;
        };
    this.answer = this.getResult();
};

var Obj2 = function() {
       var x = obj1.answer;

};

var testobj1 = new Obj1();
var testobj2 = new Obj2();

console.log(testobj2.x);

これは「未定義」を返します。2 つの質問があります。1 つ目は「なぜですか」です。2 つ目は、「これを機能させるにはどうすればよいか」です。testobj2内からtestobj1のanswerメソッドにアクセスできるようにしたいです。方法はありますか?ここで理解していない原則について教えてくれるリンクは大歓迎です。

追伸 - 私は自分の質問に対する答えを得るために、Google とこのサイトを検索して十分な注意を払いました。私がそれを見つけた場合、私はそれを理解していなかったので、新しい説明は大歓迎です.

4

1 に答える 1

0

Heresは、あなたがやろうとしていることの実例です

フィドル: http://jsfiddle.net/yjTXK/1/

var Obj1 = function (){
    this.getResult = function() {
        var result = 5*5;
        return result;
     };

    this.answer = this.getResult();
};

var Obj2 = function(obj1) {
    //assign the answer to this.x, var doesn't 'live' outside of the constructor
    this.x = obj1.answer;
};

//you make an instance of obj1, this is different from the 'class' Obj1
var testobj1 = new Obj1();

//then you pass that instance into an Obj2, so it can be consumed
var testobj2 = new Obj2(testobj1);

console.log(testobj2.x);

W3Schools にはJavascript オブジェクトに関する非常に優れた入門書があり、基本に慣れることができます。

更新、なぜ Obj1 のインスタンスを Obj2 に渡すのですか?

最初のインスタンスへの参照を使用して 2 番目のインスタンスを提供する必要があります。最初のインスタンスを作成したら、2 番目のオブジェクトにそのことを知らせる必要があります。これが、それを渡す理由ですObj1Obj2

于 2013-09-12T21:55:32.613 に答える