JavaScriptはすべて対象ではありません.

4486 ワード

前の編:「関数宣言と関数表現―関数宣言と関数表現の異同」
前に書く
ネット上では「JavaScriptはすべて対象」という言葉が非常に多く使われていますが、この「すべて」はいったい本当の「すべて」ですか?それとも虚数ですか?ネット上の文章を見たことがあります.ある三つ葉無ロバは、コピー概念です.あるのは一部を説明しただけで、正確な結論を出していません.
もちろん、結論はもちろん文章の最後に置くべきです.
データタイプの概要
入る前に、簡単にjsのデータタイプを説明する必要があります.もちろん、仲間たちも直接パスできます.jsのデータタイプは2種類あります.元のタイプと対象のタイプがあります.この中には、元のタイプは次の種類があります.数字型、文字列型、ブール値、null、undefined.対象のタイプは、ユーザが様々な方法で自分で作成したオブジェクトといくつかの手紙があります.数組とか特殊対象.
元の値
元の値は変更できません.
原始値といえば、もっと簡単に原始値の話をする必要があります.
まず結論を出す.
元の値は修正できないです.何ですか?強制しても来られないです.数字、ブール値、null、undefinedは明らかに修正できません.5は5です.6ではありませんが、文字列はどうやって修正できないですか?文字列は多くの文字列方法で文字列を修正できます.解凍するために、まず暖かい例を作ってください.
var string='The handsome have five girlfriend.';
string.toUpperCase();
私たちは「イケメンは5人の彼女がいます」という文字列を定義しました.(実は、パンティにも5人の女の子がいます.the diors have five girlfriendああ)、そしてtoUpperCase()メソッドを呼び出して文字列を大文字にします.出力します.
alert('       :' + string + '        :' + string.toUpperCase());
OK、出力結果はこうです.
       :The handsome have five girlfriend.         :THE HANDSOME HAVE VIFE GIRLFRIEND.
ここを見て、すべてが裸になりました.
文字列のように見える方法は修正された文字列を返していますが、実際には新しい文字列、すなわち2つの文字列を返しています.
ここで話をすると、元の値は確かに修正できないです.つまり元の値は可変ではありません.
元の値はオブジェクトですか?
次に、本題に入ります.元の値はいったい対象ですか?
まず、対象のタイプはもちろん対象ですが、原因は「母が母であることを証明する」ということです.元のタイプが対象かどうかは文字列のタイプで説明します.
まず、新鮮な焼きたての生々しい例を紹介します.
var string='Make Life Get Better';//   MLGB !!!!!!!!!
alert(string.length);
このMLGBは文字列で、本来は対象のように属性があるべきではないですが、事実はどうですか?この新鮮な出来上がりの血淋の出力を見てみます.
20
その結果、この元の値文字列は、文字列オブジェクトならではのlength属性を使用して、string文字列の長さを出力した.
okです.だから文字列の種類を対象とする理由があります.なぜですか?ここでは包装対象の概念に触れます.
包装の対象
上記の例では、文字列を読み取る際にオブジェクトを作成しますが、このオブジェクトは一時的なものですので、学術名は包装対象と言います.臨時的には、属性を読み取る時に、このstring文字列をnew String()方式で文字列オブジェクトを作成します.対象が自然にあります.属性がありますが、このオブジェクトは一時的なもので、引用が終わるとその対象は破棄されます.
それから《JavaScript権威の手引き》の中のひと言を引用して補充します.
実际には、この仮のオブジェクトを作成または廃弃する必要はありませんが、全体のプロセスは、このように见えます.
同じように、数字、ブール値は属性を読み込む時も自分のコンストラクターを通して自分の一時的なオブジェクトを作成し、オブジェクトのように(つまりオブジェクト)それぞれの属性を参照すると、文字列、数字、ブール値は対象として見られます.ここは対象として見られます.つまり、厳密には対象ではなく、オブジェクトは可変であり、属性は変更できます.元の値は可変ではないです.しかし、彼らの包装対象と対象は非常に似ています.包装対象の属性を読み取ることができます.
ただし、注意してください.
作成されたのは単なる対象です.書いた属性は一時的な対象にしか存在しません.引用が終わったらすぐに廃棄されます.書いた属性も自然に消えてしまいます.皮がなくて、毛が付きません.作成された臨時の対象は属性だけ読めます.属性は書いてはいけません.興味のある方は属性を与えて、属性を読んでみてください.節約するためにいくつか節約してください.バイトの流量、例はここで書きません.null&undefinednullundefinedは?私達は引き続き触ります.
まずnullです.null です.「空の値」を表しています.nullに対してtypeof操作を実行します.出力結果はobjectです.nullを特殊なオブジェクトとして見ることができます.このオブジェクトは「空のオブジェクト」を表しています.これも相手です.この仲間は理解してくれます.
次いでundefinedであり、undefinedは別の意味で「空の値」である.特殊値は未定義を表しています.変数に対して初期化されていないと宣言した場合、出力はundefinedとなります.存在しない属性を引用すると、出力もundefinedとなります.仲間は自分で検証できますが、キーワードではなく、変数であり、グローバル変数であることに注意してください.
alert(undefined in window)
出力:
true
結果はundefinedがグローバル変数であることを証明した.
同様に、typeofのタイプをundefinedで見てみます.undefinedはこのタイプの唯一のメンバーであることを厳格に示しています.ちなみに、undefinednulltypeofですが、objectは固有のタイプの唯一のメンバーです.nullは包装対象がなく、undefinedタイプもtypeofタイプではありません.対象とは縁故関係がないので、対象とは思わない.
結び目が一つ小さい
もちろん、以上は簡単な説明です.深いところに水を掘るともっと多いです.しかし、簡単に結論を出すことができます.objectを除いて、JavaScriptのすべては対象です.或いは対象として見られます.もちろん、これは家族の言葉です.友達も自分の理解を共有することを歓迎します.私は時間になりました.昼寝をします.シャオナラ.
補足内容
2015/8/23
9階のネット友達のmaxisuoはundefinedinstanceofと判断したらnullをプリントアウトします.ここで私の理解を言います.
  • consone.log(typeof null)はtrueで、consone.log(null instance of Object)はfalseです.
  • 、instance ofは参照タイプを判断するためのものであり、nullは5つの基本タイプの一つであり、instance ofで基本タイプはすべてfalseに戻ると判断します.これは比較的直接的な原因だと思います.
  • 、第二の解釈はあまり正しくないと思いますが、私もこのように理解していますので、一緒に取り出してみます.instanceofは引用タイプの実例かどうかを判断します.nullは空引用です.objectの実例化ではないので、falseを印刷します.また、nullは特殊なので、自分の基本タイプだけを含めています.特別扱いを受ける.
  • 、最初の説明を見てください.
  • PS:10階のブロガーにもこのような回答があります.
    作者:myvin原文出所:http://www.cnblogs.com/myvin/p/4660138.html転載は作者と出所を説明してください.
    下一篇:「Bootstrapを抱え込む—ナビゲーションバー編」
    転載先:https://www.cnblogs.com/myvin/p/4660138.html