なぜ宣言する必要があるのか
var foo = {}
それ以外の
var foo = new Object();
それらが類似している場合、JavaScriptで?同じことが当てはまりますか
foo[0].bar = new Function(){ "return hello"};
のように
foo[0].bar = function(){return "hello"};
? 効率の問題ですか?違いはありますか?
なぜ宣言する必要があるのか
var foo = {}
それ以外の
var foo = new Object();
それらが類似している場合、JavaScriptで?同じことが当てはまりますか
foo[0].bar = new Function(){ "return hello"};
のように
foo[0].bar = function(){return "hello"};
? 効率の問題ですか?違いはありますか?
w3fools.comから以下を読んだことを覚えています。
personObj=new Object();
これは
new
キーワードの不適切で不必要な使用です。{}
新しいオブジェクトを作成するために、オブジェクト リテラル構文 ( ) を使用し、推奨する必要があります。
理由は述べられていません。
実際
var foo = {}
と
var foo = new Object();
は同じことを行います (両方の式が空の を作成しますObject
) が、短いバージョン ( ) を使用することをお勧めします。object literal
書き込みに必要なスペース時間が少なくて済みます。object literal
Object
person = {
property1 : "Hello"
};
ただし、new Object()
最初に作成してから、次のように値/プロパティを割り当てる必要があります
person = new Object();
person.property1 = "Hello";
2 番目の例 ( function vs new function
) には違いがあるためnew Function
、ここでこのテストslower
を確認できます。
コンストラクタは実際にはそのnew Function()
ようには機能しません。
それは次のように呼ばれます:
var myFunc = new Function("param1", "param2", "message", "/*function-body-as-a-string*/ console.log(message); return param1 + \"=\" + param2;");
つまり、本当に愚かで、エラーが発生しやすく、愚かで遅く (eval を使用)、セキュリティ ホールです。使用しないでください。
いいえ、効率の増減はありません。: if/else..
私は常に省略形の {} を使用しますが、初心者にコードを読んでもらう場合は、new Object() を使用することをお勧めします。
唯一問題になるのは、そのような JavaScript を動的に生成するプログラムを作成する場合、または大学の特定の教師に向けて作成する場合です。