0

非ブラウザー環境(Titanium Studio)で次のコードを使用していますが、result1とresult2の両方が機能し、同じ結果を返し、同じタイプ(オブジェクト)であることに気付きました。

それらがどこかで異なっているかどうか、そしてそれらがどのように異なっているかを説明できますか?

私の場合、name1内にはローカルコンテキストへの参照がなく(そこには「this」はなく、ローカル変数のみ)、「new」がある場合とない場合ですべてのコードを記述すべきかどうかを判断しようとしています。以下のような状況。

var name1 = function(some_arg){
    // some stuff
    return result; // returns an object
}

var result1 = name1('some_value');
var result2 = new name1('some_value');

typeof(result1); // returns object
typeof(result2); // returns object

ありがとう!

以下の編集:元の質問に回答しました。現在、関連する説明を探しています。

以下のコメントに関連するコード:

function Name1 (name){
    this.name = name;
}
var version1 = new Name1('joey');
version1.name;

var Name2 = function(name){
    this.name = name
}
var version2 = new Name2('joey');
version2.name;

ありがとう!

4

1 に答える 1

2

thisを使用している場合は新しいオブジェクトにバインドされ、使用newしていない場合はグローバルオブジェクトにバインドされますnew。コンストラクター関数やオブジェクトに追加するメソッドで使用しない場合this、それは実際には重要ではありませんが、とにかく使用する必要があります。そうしないと、使用した場合に問題が発生します。

于 2012-04-13T05:40:00.680 に答える