私はあまりにも比喩的で、以前の答えではわかりません。明確化が続く。
Array、Boolean、Date、Function、Number、RegExp、Stringのインスタンスはオブジェクトですが、各タイプに固有のメソッドとプロパティで強化されています。たとえば、配列には事前定義されたlength
プロパティがありますが、汎用オブジェクトにはプロパティはありません。
javascript:alert([].length+'\n'+{}.length)
ディスプレイ
0
undefined
は本質的に、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);
表示
one,two,three
[object Object]
["one", "two", "three"]
4 .toSource() forgot me!
3 and my length!
({0:"one", 1:"two", 2:"three", a:4})
と0 1 2 a
と0 1 2 a
。すべてのオブジェクトが機能していることを声明に関して
:
それobj
以外の任意のタイプである123()
又は"abc"()
又は[]()
又は{}()
又はobj()
ような関数などの任意のオブジェクトのインスタンスを使用することも構文的にも意味的に正しいですFunction
なので、任意のオブジェクトINSTANCEは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
定義、すべてのオブジェクトが機能していること、したがって文として現れます! (私は意図的にオブジェクトインスタンスとそのオブジェクトタイプの区別をあいまいにしてぼかしていました!しかし、これは「他のオブジェクトとオブジェクトを持たないことはできません」ということです。インスタンスとは反対。)
両方の官能オブジェクトパラダイムは、プログラミングの基礎と内蔵例えばMath
とJSON
とtrue
としてプリミティブ、JSインタプリタ低レベルの実装であると思われます。
javascript:alert([Math, JSON, true.toSource()].join("\n\n"));
ディスプレイ
[object Math]
[object JSON]
(new Boolean(true))
のJavascriptの開発時には、オブジェクト中心のプログラミングスタイル(OOPの - オブジェクト指向プログラミングのスタイル - 「さんは、」私自身のしゃれです!)が流行し、通訳者は同様にJavaに洗礼をかけて信頼性を高めました。機能的プログラミング技法は、オートマタ、再帰関数、形式言語などの理論を研究するような、抽象的で難解な試験に委ねられた。しかし、これらの正式な考慮事項の強みは、特にFFのGeckoエンジン(すなわち、.toSource()
)に実装されているように、Javascriptでは明白に現れています。
Functionのオブジェクト定義は、特にそれが漸化関係として定義されているため満足です!それ自身の定義を使って定義されています!
function Function() { [native code] }
と機能が同じ感情が
function Object() { [native code] }
ために保持するオブジェクトであるからです。
他の定義のほとんどは、静的なターミナル値を静止します。しかし、eval()
は特に強力なプリミティブであるため、Stringは任意の機能を組み込むこともできます。
ここでも、上記で使用された母国語は、オブジェクトの種類とインスタンスの区別を覆い隠しています。
myArray.lengthは配列内の最後の要素の数値インデックス/キーを返しますが、実際の要素数は返しません。 Arrayオブジェクトのプロパティは配列値と同じではありませんか? –
Arrayオブジェクトの意図されたセマンティクスを説明しようとしていたのは、通常のオブジェクトのように扱うだけの場合、乱用されていることです。リンクされた記事はより良い仕事をします:) –
次回は誰かがJavaScriptを開発するのに良い言語だと言ったら、私は彼にこのサンプルを示します。ありがとうございました。 –