1

次のような変数定義があります。

var obj = function(){
this.prop1 = "prop1";
return this;
}

obj.prop2 = "prop2";

undefinedにアクセスしようとすると、値が取得されますobj().prop2

また、戻り値を返そうとすると undefined が返ってobj.prop1きます。obj.prop2prop2

  1. によって未定義の値が返される原因を知りたいですobj().prop2
  2. 実行するときに、プロパティprop2は同じオブジェクトの一部ではありませんobj.prop2 = "prop2"
  3. obj.prop1値を返す理由undefined
4

2 に答える 2

0

働きたいthis(またはinstanceOf)場合は、を使用する必要がありますnew。新しいキーワードはthis、プロトタイプが関数プロトタイプである新しく作成されたオブジェクトにバインドします

これを使わずに作業したい場合は、次のようにコードを書くことができます

 var obj = function(propValue){
   return {
        prop1: propValue
    };
}
var objectCheck = obj('prop1');
console.log(objectCheck .prop1);
objectCheck .prop2 = "prop2";
console.log(objectCheck .prop2);

理解するのは簡単です。obj 関数はプロパティ prop1 を持つオブジェクトを返し、後でそのオブジェクトに prop2 を追加します。

于 2013-10-15T10:40:38.793 に答える