JavaScriptの基本型、参照型、基本パッケージ型、一体型の組み込みオブジェクト

ベーシックタイプ

基本データ型:数値、文字列、ブール、ヌル、未定義。混合データ型:オブジェクト
参照データ型:配列、日付、正規表現、関数
データ型の種類:オブジェクト、数値、関数、ブール値、未定義

ECMAScript変数には、基本タイプの値と参照タイプの値の2つの異なるデータタイプの値が含まれます。
基本型の値:単純なデータセグメント
参照型の値:複数の値で構成される可能性のあるオブジェクトを参照します。参照型の値は、メモリに格納されているオブジェクトです。
JavaScriptでは、メモリ内の場所に直接アクセスすることはできません。つまり、オブジェクトのメモリ空間を直接操作することはできません。オブジェクトを操作するときは、実際のオブジェクトではなく、オブジェクトの参照を実際に操作しています。

参照タイプ

参照型の値(オブジェクト)は、参照型のインスタンスです。
参照タイプは、オブジェクトのクラスのプロパティとメソッドを記述するため、オブジェクト定義と呼ばれることがあります。
新しいオブジェクトは、コンストラクターが後に続くnew演算子を使用して作成されます。コンストラクター自体は関数ですが、新しいオブジェクトを作成するために関数が定義されています。(配列タイプについては別の記事を参照してください)

オブジェクトタイプ

オブジェクト型のネイティブ参照型
ほとんどの参照型の値はオブジェクト型のインスタンスで
あり、オブジェクトインスタンスを作成するには2つの方法があります:
1. new演算子を使用し、その後にObjectコンストラクターを続けますvar person = new Object();
2.オブジェクトリテラル表現メソッド。これは、多数の属性を含むオブジェクトを作成するプロセスを簡略化するオブジェクト定義の省略形です。
var person = {"name": "ABC"};
オブジェクトリテラル構文を使用する場合、属性名には文字列
var person = {"name": "ABC"、 "age":29,5:true} も使用できます; 5も自動的に文字列に変換されます

一般に、オブジェクトプロパティにアクセスするときはドット表記が使用され、JavaScriptは角括弧表記を使用してオブジェクトプロパティにアクセスすることもできます。角括弧構文の利点は、変数を介して属性にアクセスできることです。ドット表記
var propertype = "name";
alert(person [propertype]); "ABC" を使用することをお勧めします

日付タイプ

日付型は、1970年1月1日UTCの午前0時(ゼロ時間)から経過したミリ秒数を使用します
。Date.parse()メソッドは、日付を表す文字列パラメーターを受け取り、この文字列に基づいて対応する日付のミリ秒を返します。
Date.parse()メソッドの動作は、実装によって異なりますが、通常は地域によって異なります。
米国: "月/日/年" "英語の月、日、年" "英語の曜日英語の月の日日時間:分: 2番目のタイムゾーン "
var someDate = new Date(Date.parse(" May 25,2004 "));
var someDate = new Date(" May 25,2004 ");同等、バックグラウンドは自動的にDate.parse()
Date.nowを呼び出す()メソッド。このメソッドが呼び出された日時を表すミリ秒数を返します。
例:

var start = Date.now();  //取得开始时间
dosomething(); //调用函数
var stop = Date.now();  //取得停止时间或 var stop = + new Date();
result = stop - start; 在不支持它的浏览器中,使用+操作符获取Date对象时间戳

RegExpタイプ(ローカルオブジェクト)

  1. var expression = / pattern / flags;リテラルの形式で定義された正規表現
    flags:正規表現の動作を
    示しますg:グローバルモードを示します。つまり、パターンはすべての文字列に適用されます。最初の一致が見つかるとすぐに停止するのではなく、
    i:は大文字と小文字を区別しないパターンを
    示します。m:複数行のパターン
    が他の言語の式に似ていることを示します。すべてのメタ文字はエスケープする必要があります。
    正規表現のメタ文字:([{\ ^ $ |)?* +。]}
  2. 一致する文字列パターン、オプションのフラグ文字列
    var pattern = new RegExp( "\ [bc \ at"、 "i");
    RegExpオブジェクトの主なメソッドはexct()です。グループのキャプチャ用に特別に設計された
    2番目のメソッドはtest()です。これは文字列パラメーターを受け取り、パターンがパラメーターと一致する場合にtrueを返します。

機能タイプ

関数は実際にはオブジェクトです。
関数はオブジェクトであるため、関数名は実際には関数オブジェクトへのポインタであり、関数にバインドされません

  1. 関数宣言構文

    function sum(num1、num2){
    return num1 + num2;
    }

  2. 関数式定義関数

    var sum = function(num1、num2){
    return num1 + num2;
    }

  3. 関数コンストラクターを使用すると、任意の数のパラメーターを受け取ることができ、最後のパラメーターは関数本体と見なされます

    var sum = new Function( "num1"、 "num2"、 "return num1 + num2");非推奨

関数名は関数への単なるポインタであるため、関数名はオブジェクトポインタを含む他の変数と同じです。
関数にはいくつかの名前があります

function sum(num1,num2){
	return num1+num2;
}
alert(sum(10,10));//20
var anotherSum = sum;
alert(anotherSum(10,10));//20
sum = null;
alert(anotherSum(10,10));//20

変数anotherSumを宣言し、それをsumに等しく設定します(sumの値をanotherSumに割り当てます)。括弧なしの関数名は、関数を呼び出すためではなく、関数ポインタにアクセスするためのものです。このとき、otherSumとsumdはどちらも同じ関数を指し、sumはnullに設定されており、anothersumには影響しません。

オーバーロード
では同じ名前の2つの関数が宣言されないため、後者の関数が前の関数を上書きします。

元のデータ型と参照データ型の違い

格納場所が異なり
ます。元のデータ型がスタックに直接格納される単純なデータセグメントは、スペースが小さく固定サイズです。これは、頻繁に使用されるデータに属しているため、
参照データ型を格納するためにスタックに配置されます。サイズは固定されていません。スタックに格納されている場合、プログラムのパフォーマンスに影響します。参照データ型はポインターをスタックに格納し、ポインターはヒープ内のエンティティの開始アドレスを指すように変更されます。インタープリターが参照値を探すとき、最初にスタック内のアドレスを取得し、アドレスを取得した後にヒープからエンティティを取得します。

基本タイプと参照タイプの値の定義は似ています:変数の作成と変数への値の割り当て。この値を変数に保存すると、さまざまなタイプの値に対して実行できる操作が大きく異なります。参照型の値の場合、それらに属性とメソッドを追加でき、それらの属性とメソッドを変更および削除することもできます。

基本包装タイプ

基本タイプの値の操作を容易にするため。ECMAScriptは、ブール、数値、文字列の3つの特別な参照型を提供します
var s1 = "some text";
var s2 = s1.substring(2);
基本型の値はオブジェクトではなく、論理的にはメソッドを持たないはずです。
コードの2行目がs1にアクセスすると、アクセスプロセスは読み取りモードになります。つまり、この文字列の値はそこから読み取られます。読み取りモードで文字列にアクセスすると、バックグラウンドで自動的に以下の処理が完了します。基本的な文字列値はオブジェクトと同じになります。

1. String型のインスタンスを作成する
2. インスタンスで指定されたメソッドを呼び出す
3.このインスタンスを破棄する
var s1 = new String( "some text");
var s2 = s1.substring(2);
s1 = null;

数値タイプ

toString()メソッドは、カーディナリティーを表すパラメーターを渡し、10進値のストリング形式を返すように指示します。
var num = 10;
alert(num.toString()); // "10"
alert(num.toSting(2)); // "1010"バイナリ
toFixed()は、指定された小数点以下の桁数に従って数値文字列を返します表す
// "10.00"、アラート(num.toFixed(2))
VAR NUM = 10.005;
アラート(num.toFixed(2)); // "10.01"自動丸め

文字列型

各インスタンスには長さ属性があります

キャラクター方式

文字列内の特定の文字にアクセスするための2つのメソッド:charAt()とcharCodeAt()
charAt()メソッドは、特定の位置にある文字を単一文字の文字列の形式で返します
var stringvalue = "hello world";
alert(stringvalue。 charAt(1)); //“ e”
charCodeAt()は文字エンコーディング
アラートを取得します(stringvalue.charCodeAt(1)); //“ 101”
は角かっこと数値インデックスを使用して文字列
アラートの特定の文字にアクセスできます( stringvalue [1]); // "e" IE7は以前に未定義を返しました

文字列操作メソッド

  1. concat()メソッドは、1つ以上の文字列を連結し、連結によって取得された新しい文字列を返します
    。varresult = stringvalue.concat( "!");元の文字列
    アラート(結果);に影響を与えることなく、複数のパラメーターを受け入れることができます。 / "Hello world!"
    より多くの文字列連結はプラス演算子(+)です

  2. ECMAScriptは、部分文字列に基づいて新しい文字列を作成するための3つのメソッドを提供します。slice()、substr()、substring()はすべて、操作された文字列の部分文字列を返し、すべて1つまたは2つのパラメーターを受け入れます。文字列自体を変更します

  • 最初のパラメーターはサブストリングの開始位置を指定し、slice()およびsubstring()の2番目のパラメーターはサブキャラクターの最後のストリングの後の位置を指定し、substr()の2番目のパラメーターは戻り値を指定します文字数
  • パラメータは負の値です
    。slice()メソッドは、入力された負の値を文字列の長さに
    追加します。substr()メソッドは、負の最初のパラメータを文字列の長さに追加し、負の2番目のパラメータを0、
    サブストリング()メソッドはすべての負のパラメーターを0に変更します
  1. 文字列位置メソッド
    文字列から文字列検索する方法:indeOf()およびlastIndexOf()は、部分文字列の位置を返します。
    どちらも、オプションの2番目のパラメータを受け入れ、文字列のどの位置から検索を開始するかを示します。

  2. tirm()メソッド
    は、文字列のコピーを作成し、サフィックスの前後のすべてのスペースを削除して、結果を返します
    var str = "hello"; alert(str.trim()); // "hello"

  3. 文字列の大文字小文字変換メソッド
    toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase()

  4. 文字列パターン照合方法

  • match()の本質は、RegExpを呼び出すexec()メソッドと同じです。1つのパラメーターのみを受け入れます。正規表現/ RegExpオブジェクト
    var text = "cat、bat、sat、fat";
    var pattern = /.at/; //およびpattern。 exec(テキスト);同じ
    変数の一致= text.match(パターン);
    アラート(matches.index); // 0
    アラート([[]に一致]); //「猫」
    アラート(pattern.lastIndexOf()); // 「0」

  • パターンを見つける方法は、search()
    が最初の一致のインデックスを文字列に返すこと
    です
    。vartext = "cat、bat、sat、fat"; var pos = text.search(/ at /);
    alert(pos); //文字列内で最初に出現する「at」

  • replace()メソッド
    2つのパラメーター、RegExpオブジェクトまたは文字列、文字列または関数
    var text = "cat、bat、sat、fat";
    var result = text.replace(/ at / g、 "ond") ;
    アラート(結果); // "cond"、 "bond"、 "sond"、 "fond"

  • split()メソッドで
    指定されたセパレーターは、ストリングを複数のサブストリングに分離し、結果を配列に入れます。セパレーターは、ストリングまたはRegExpオブジェクトにすることができます。サイズ
    var colorText = "red、blue、green、yellow";
    var color1 = colorText.split( "、"); // ["red"、 "blue"、 "green"、 "yellow"]
    var color2 = colorText。 split( "、"、2); // [[red "、" blue "]

  1. localeCompare()メソッド。アルファベット順の並べ替え規則に従って、2つの文字列を比較します。

  2. formCharCode()メソッドは、1つ以上の文字コードを受け取り、それらを文字列に変換します。charCodeAt()は、反対の操作を実行します。

参照タイプと基本的なパッケージタイプの主な違いは、オブジェクトの寿命です。

new演算子を使用して作成された参照型のインスタンスは、実行フローが現在のスコープを離れるまでメモリに保持されます。自動的に作成された基本パッケージタイプのオブジェクトは、コード行の実行時にのみ存在し、すぐに破棄されます。つまり、実行時にプロパティとメソッドを基本型の値に追加できなくなります。
基本パッケージタイプのインスタンスでtypeofを呼び出すと「オブジェクト」が返され、基本パッケージタイプのすべてのオブジェクトはブール値trueに変換されます。

一体型の組み込みオブジェクト(gload、Mathはインスタンス化できません)

ECMAScript-262定義:ホスト環境に依存しない、EXMAScript実装によって提供されるオブジェクトこれらのオブジェクトは、ECMAScriptプログラムの実行前にすでに存在していました。
グローバルスコープでGlobalおよびMath によって定義されたすべてのプロパティと関数は、Globalオブジェクトのプロパティです。

  1. URIエンコード方式
    グローバルオブジェクトのencodeURI()およびencodeURIComponent()メソッドは、ブラウザーに送信するためにURI(Universal Resource Identifier)をエンコードできます。

  2. eval()メソッド
    eval()メソッドは完全なECMAScriptパーサーのようなもので、1つのパラメーター、実行されるECMAScript(またはJavaScript)文字列のみを受け入れます
    eval( "alert(" hi ")); Alert( "Hi");
    eval()によって実行されるコードは、包含環境で定義された変数を参照できます
    var msg = "hello world"; eval( "alert(msg)"); //
    eval()で作成された"hello world" 変数または関数は昇格されません。これは、コードを解析するときに、eval()が実行されたときにのみ作成される文字列に含まれるためです。

ウィンドウオブジェクト

ECMAScriptはグローバルオブジェクトに直接アクセスする方法を示していませんが、Webブラウザーはこのグローバルオブジェクトをウィンドウオブジェクトの一部として実装しています。したがって、グローバルスコープでは、宣言されたすべての変数と関数がウィンドウオブジェクトになります属性。
グローバルオブジェクトを取得する別の方法

var global = function(){
	return this;
}();

関数を直ちに実行し、この値を返します。関数のthisの値が指定されていない場合、この値はGlobalオブジェクトと同じです

数学オブジェクト

  1. min()およびmax()メソッド
    配列の最大値または最小値を見つけるには、次のようにします:
    var val = [1,2,3,4,5,6,7,8];
    var max = Math.max.apply(Math 、val);
    この値を正しく設定するために、Mathオブジェクトを適用の最初のパラメーターとして使用します

  2. 丸めメソッド
    Math.ceil()は、Math.ceil(25.9);
    を切り上げます。// 26 Math.floor()は、Math.floor(25.9);を切り捨てます; // 25
    Math.round()標準の丸め25.9 -> 26 25.5-> 26 25.1-> 25

  3. rondom()メソッド
    は、0以上1未満の乱数を返します
    value = Math.floor(Math.random()*は、合計+最初の可能な値の価値がある場合があります)
    1から10の間var num-Math.float(Math .random()* 10 + 1)

変数値をコピー

基本型の値をある変数から別の変数にコピーすると、変数オブジェクトに新しい値が作成され、その値が新しい変数が割り当てられている場所にコピーされます。
参照型の値をある変数から別の変数にコピーすると、変数オブジェクトに格納されている値も新しい変数割り当てスペースにコピーされます。違いは、この価値のあるコピーはポインタであり、このポインタはヒープに格納されているオブジェクトを指していることです。コピー操作が終了すると、2つの変数は実際には同じオブジェクトを参照するため、一方の変数を変更すると、もう一方にも影響が及びます。
例:

  1. var num1 = 5; var num2 = num1; num1に
    保存された値は5です。Num1の値を使用してnum2を初期化すると、値5もnum2に保存されますが、num2の5とnum1の5は完全に独立しています。値は、num1の5のコピーです。その後、2つの変数は相互に影響を与えることなく任意の操作に参加できます。
  2. var obj = new Object(); var obj2 = obj1; obj1.name = "ABC"; alert(obj2.name); // "ABC"
    obj1はオブジェクトの新しいインスタンスを保存し、この値はobj2、obj1にコピーされますobj2は同じオブジェクトを参照しています。obj1はname属性を追加し、obj2もこの属性にアクセスできます。

この記事は、「JavaScript Advanced Programming」の要約からのものです。

元の記事を17件公開しました 賞賛されました0 訪問数769

おすすめ

転載: blog.csdn.net/CandiceYu/article/details/89888802