2

次のコード:

function A() {
    this.method_this_outsideReturn = function() {
        console.log('method_this_outsideReturn')
    };
    return {
        method_this_insideReturn: function() {
            console.log('method_this_insideReturn')
        },
    };
}
var a = new A();
console.log(a.method_this_insideReturn()); // This would work.
console.log(a.method_this_outsideReturn()); // This wouldn't work. Warns attri_this_outsideReturn undefined

ただし、リターンをコメントアウトした後:

function A() {
    this.method_this_outsideReturn = function() {
        console.log('method_this_outsideReturn')
    };
    /*return {
        method_this_insideReturn: function() {
            console.log('method_this_insideReturn')
        },        
    };*/
}
console.log(a.method_this_outsideReturn()); // This would work now

なぜそうなのですか?return はコンストラクターで何をしますか? return ステートメントが存在しない場合はどうなりますか?

4

4 に答える 4

4

コンストラクターが値を返す場合、返された値は作成されたオブジェクトと見なされます。return ステートメントがない場合は、次のように想定されます。return this

于 2013-05-22T08:48:08.460 に答える
-1

すべての関数/メソッド呼び出しにはreturnステートメントがありますが、明示的に含まれていない場合はreturn undefined

したがって、この場合コメントアウトしても何も返されません。

于 2013-05-22T08:45:56.030 に答える