私は、私は前の答えで比喩的で不可解すぎると思います。説明は次のとおりです。
Array、Boolean、Date、Function、Number、RegExp、String のインスタンスは Object ですが、各タイプに固有のメソッドとプロパティで強化されています。たとえば、配列には定義済みのlength
プロパティがありますが、ジェネリック オブジェクトにはありません。
javascript:alert([].length+'\n'+{}.length)
ディスプレイ
0
未定義
本質的に、FF Gecko インタープリターは、言語構造を評価する明確な違いにより、配列と汎用オブジェクトも区別します。
javascript:
ra=[ "one", "two", "three"]; ra.a=4;
ob={0:"one", 1:"two", 2:"three"}; ob.a=4;
alert(
ra +"\n\n"+
ob +"\n\n"+
ra.toSource() +"\n\n"+
ra.a +"\t .toSource() forgot me! \n\n"+
ra.length +"\t and my length! \n\n"+
ob.toSource());
ps=""; for(i in ra)ps+=i+" "; alert(ps); /* NB .length is missing! */
ps=""; for(i in ob)ps+=i+" "; alert(ps);
表示する
一二三
[オブジェクト オブジェクト]
["一二三"]
4 .toSource() 忘れてた!
3と私の長さ!
({0:"1", 1:"2", 2:"3", a:4})
と0 1 2 a
と0 1 2 a
.
すべてのオブジェクトが関数であるというステートメントについて:
123()
任意のオブジェクト インスタンスをor"abc"()
または[]()
or {}()
orのような関数として使用することは、構文的にも意味的にも正しくありません。obj()
ここで、obj
は 以外の型です。ただし、オブジェクトとそのタイプが である場合、どのようにして になるのでしょうか? とは何ですか?Function
Function
obj
Array, Boolean, Date, ...
obj
Array, Boolean, Date, ...
Array, Boolean, Date, ...
javascript:
alert([Array, Boolean, Date, Function,
Number, Object, RegExp, String] . join('\n\n') );
ディスプレイ
function Array() {
[native code]
}
function Boolean() {
[native code]
}
function Date() {
[native code]
}
function Function() {
[native code]
}
function Number() {
[native code]
}
function Object() {
[native code]
}
function RegExp() {
[native code]
}
function String() {
[native code]
}
すべての場合において、オブジェクト型はfunction
定義として明示されます。したがって、すべてのオブジェクトは関数であるというステートメントです! (皮肉なことに、オブジェクト インスタンスとその型の区別を意図的にあいまいにし、あいまいにしています! それでも、これは「一方がなければ他方が存在できない」ことを示しています。オブジェクトと関数!インスタンスに反対します。)
機能パラダイムとオブジェクト パラダイムの両方が、 や などの JS インタープリターの低レベル組み込みプリミティブのプログラミングと実装の基本であるように思わMath
れJSON
ますtrue
。
javascript:alert([Math, JSON, true.toSource()].join("\n\n"));
ディスプレイ
[object Math]
[object JSON]
(new Boolean(true))
Javascript の開発時には、オブジェクト中心のプログラミング スタイル (OOP's - Object Oriented Programming style - "'s" は私のしゃれです!) が流行しており、インタプリタも同様に信頼性を高めるために Java と名付けられました。 . 関数型プログラミングの手法は、オートマトン、再帰関数、形式言語などの理論を研究する、より抽象的で難解な試験に追いやられ、それ自体は口に合うものではありませんでした。ただし、これらの正式な考慮事項の強みは、特に FF の Gecko エンジン (つまり ) に実装されている Javascript で明確に表れています.toSource()
。
Function の Object 定義は、再帰関係として定義されているため、特に満足のいくものです! 独自の定義を使用して定義されています!
function Function() { [native code] }
関数はオブジェクトであるため、同じ感情が にも当てはまります
function Object() { [native code] }
。
他の定義のほとんどは、静的な端末値に静止します。ただし、eval()
特に強力なプリミティブであるため、String には任意の機能を埋め込むこともできます。
繰り返しますが、上記で使用されている専門用語は、オブジェクト タイプとインスタンスの区別をあいまいにしています。