* JavaScriptの基礎6組み込みオブジェクト・スタック・パラメータの受け渡し

1-組み込みオブジェクト

1.1組み込みオブジェクト

JavaScriptには、カスタムオブジェクト、組み込みオブジェクト、ブラウザオブジェクトの3種類のオブジェクトがあります。
最初の2つのオブジェクトはJSの基本コンテンツであり、ECMAScriptに属しています。3番目のブラウザオブジェクトはJSに固有であり、JSAPIは説明しています。組み込みオブジェクト。JS言語に付属するいくつかのオブジェクトを指します。これらのオブジェクトは、開発者が使用し、一般的に使用される、または最も基本的で必要な機能(属性とメソッド)を提供するためのものです。組み込みオブジェクトの最大の利点私たちが迅速に開発するのを助けることです

JavaScriptは、数学、日付、配列、文​​字列などの複数の組み込みオブジェクトを提供します。

1.2ドキュメントを確認する

ドキュメントの検索:組み込みオブジェクトの使用法を学ぶために、その共通メンバーの使用法を学ぶ限り、ドキュメントを検索することで学習でき、MDN / W3Cを介してクエリを実行できます。
Mozilla Developer Network(MDN)は、HTML、CSS、World Wide WebおよびHTML5アプリケーションのAPIなど、OpenWebに関する情報を提供します。
MDN:https://developer.mozilla.org/zh-CN/

1.3数学オブジェクト

Mathオブジェクトはコンストラクターではなく、数学定数と関数のプロパティとメソッドを備えています。数学関連の操作(絶対値、丸め、最大値など)は、数学のメンバーを使用できます。

プロパティ、メソッド名 特徴
Math.PI PI
Math.floor() 切り捨て
Math.ceil() 向上取整
Math.round() 丸められたバージョンは、最も近い整数に丸められます。注-3.5結果は-3になります。
Math.abs() 絶対値
Math.max()/ Math.min() 最大値と最小値を見つける
Math.random() (0,1)の範囲のランダムな値を取得します

注:上記の方法は括弧付きで使用する必要があります

指定された範囲内のランダムな整数を取得する

function getRandom(min, max) {
    
    
  return Math.floor(Math.random() * (max - min + 1)) + min; 
}

1。4日付オブジェクト

DateオブジェクトはMathオブジェクトと同じではありません。Dateはコンストラクターであるため、特定のメソッドとプロパティを使用する前にインスタンス化する必要があります。日付インスタンスは、日付と時刻を処理するために使用されます

  • Dateを使用して日付オブジェクトをインスタンス化します

    • 現在の時刻を取得する必要があります:インスタンス化する必要があります:
    var now = new Date();
    
    • 指定された時間に日付オブジェクトを取得します
    var future = new Date('2019/5/1');
    

    注:インスタンスの作成時にパラメーターが渡されない場合、日付オブジェクトは現在の時刻に対応する日付オブジェクトになります

  • Dateインスタンスのメソッドとプロパティを使用する

ここに画像の説明を挿入

  • Dateインスタンスを介してミリメートルの総数を取得します

    • 合計ミリ秒の意味

      1970年1月1日からのミリ秒数に基づく(協定世界時)

    • ミリ秒の合計数を取得します

      // 实例化Date对象
      var now = new Date();
      // 1. 用于获取对象的原始值
      console.log(date.valueOf())	
      console.log(date.getTime())	
      // 2. 简单写可以这么做
      var now = + new Date();			
      // 3. HTML5中提供的方法,有兼容性问题
      var now = Date.now();
      

1.5配列オブジェクト

配列を作成する2つの方法

  • 文字通りの方法

    • サンプルコードは次のとおりです。

      var arr = [1,"test",true];
      
  • new Array()

    • サンプルコードは次のとおりです。

      var arr = new Array();
      

      注:上記のコードでは、arrは空の配列を作成します。コンストラクターArrayを使用して空でない配列を作成する必要がある場合は、配列の作成時にパラメーターを渡すことができます。

      パラメータの受け渡しルールは次のとおりです。

      • 1つのパラメーターのみが渡される場合、パラメーターは配列の長さを指定します

      • 複数のパラメーターが渡される場合、パラメーターは配列の要素と呼ばれます

配列かどうかを確認してください

  • instanceof演算子

    • instanceofは、オブジェクトがコンストラクターのインスタンスであるかどうかを判別できます

      var arr = [1, 23];
      var obj = {
              
              };
      console.log(arr instanceof Array); // true
      console.log(obj instanceof Array); // false
      
  • Array.isArray()

    • Array.isArray()は、オブジェクトが配列であるかどうかを判別するために使用されます。isArray()は、HTML5で提供されるメソッドです。

      var arr = [1, 23];
      var obj = {
              
              };
      console.log(Array.isArray(arr));   // true
      console.log(Array.isArray(obj));   // false
      

配列要素を削除するメソッドを追加します

  • 配列内の要素を追加および削除する方法があります。いくつかの方法は次のとおりです。

ここに画像の説明を挿入

注:pushとunshiftは要素を追加する方法であり、popとshiftは要素を削除する方法です。

配列の並べ替え

  • 配列内の配列自体をソートする方法がありますが、いくつかの方法は次のとおりです。

ここに画像の説明を挿入

注:並べ替えメソッドは、昇順と降順を設定するためにパラメーターを渡す必要があります

  • 「function(a、b){return ab;}」が渡されると、昇順になります
  • 「function(a、b){return ba;}」を渡すと、降順になります

配列インデックス方式

  • 配列には、配列の指定された要素のインデックス値を取得する方法があります。いくつかの方法は次のとおりです。

ここに画像の説明を挿入

配列を文字列に変換する

  • 配列を配列内の文字列に変換する方法があります。いくつかの方法は次のとおりです。

ここに画像の説明を挿入

注:joinメソッドがパラメーターを渡さない場合、要素は「、」に従ってスプライスされます

他の方法

  • 配列には他の操作方法があり、生徒は授業後に自分で確認して学習することができます

ここに画像の説明を挿入

1.6文字列オブジェクト

基本包装タイプ

基本的なデータ型の操作を容易にするために、JavaScriptには、文字列、数値、ブールの3つの特別な参照型も用意されています。

基本的なパッケージ化タイプは、単純なデータ型を複雑なデータ型にパッケージ化することです。これにより、基本的なデータ型には属性とメソッドが含まれます。

// 下面代码有什么问题?
var str = 'andy';
console.log(str.length);

理由により、基本データ型には属性とメソッドはありませんが、オブジェクトには属性とメソッドがありますが、上記のコードは実行できます。これは、

jsは基本的なデータ型を複雑なデータ型にパッケージ化します。実行プロセスは次のとおりです。

// 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;

不変の文字列

内部の不変の値を指します。内容は変更できるように見えますが、実際にはアドレスが変更され、メモリ内に新しいメモリスペースが開かれます。

文字列変数を再割り当てする場合、以前に保存された変数の文字列は変更されず、メモリに文字列を再割り当てすると、メモリ内のスペースが再び開かれます。この機能は、文字列が不変であるということです。文字列
不変性であるため多数の文字列を連結すると効率の問題が発生します

文字に基づいて位置を返す

文字列は、いくつかのメソッドを呼び出して、基本的なパッケージタイプを介して文字列を操作できます。次に、指定された文字の位置を返すメソッドを示します。

ここに画像の説明を挿入

ケース:文字列「abcoefoxyozzopp」内のすべてのoの位置と出現回数を見つけます

  1. 最初に最初のoが表示される位置を見つけます
  2. 次に、indexOfによって返される結果が-1でない限り、逆方向に検索を続けます。
  3. indexOfは最初のパラメーターしか見つけることができないため、次の検索では2番目のパラメーターを使用し、現在のインデックスを1つ増やして検索を続行します。

位置に基づいて文字を返す

文字列は、基本的なパッケージタイプを介して文字列を操作するためのいくつかのメソッドを呼び出すことができます。以下は、位置に従って指定された位置の文字を返すことです。

ここに画像の説明を挿入

上記のメソッドでは、charCodeAtメソッドは指定された位置の文字に対応するASCIIコードを返します。ASCIIコード比較表は次のとおりです。

ここに画像の説明を挿入

ケース:文字列「abcoefoxyozzopp」で最も多く出現する文字を特定し、その回数を数えます

  1. コアアルゴリズム:charAt()を使用してこの文字列をトラバースします

  2. 各文字をオブジェクトに格納します。オブジェクトにこの属性がない場合は1になり、存在する場合は+1になります。

  3. オブジェクトをトラバースし、最大値と文字を取得します

    注:トラバーサルの過程で、文字列内の各文字はオブジェクトの属性としてオブジェクトに格納され、対応する属性値は文字が表示される回数です

文字列操作方法

文字列は、いくつかのメソッドを呼び出して、基本的なパッケージタイプを介して文字列を操作できます。操作メソッドの一部を次に示します。

ここに画像の説明を挿入

replace()メソッド

replace()メソッドは、文字列内の一部の文字を他の文字に置き換えるために使用され、その形式は次のとおりです。

字符串.replace(被替换的字符串, 要替换为的字符串);

split()メソッド

split()メソッドは文字列を分割するために使用され、文字列を配列に分割できます。セグメンテーションが完了すると、新しい配列が返されます。

使用形式は次のとおりです。

字符串.split("分割字符")

2-単純なデータ型と複雑なデータ型

2.1単純なデータ型

単純型基本データ型値型):ストレージ変数に格納されるのは、文字列、数値、ブール値、未定義、 nullを含む値自体です。

2.2複雑なデータ型

複雑なデータ型(参照型):可変アドレスメモリのみに格納される(参照)オブジェクトは、Object、Array、Dateなどの新しいキー(システムオブジェクト、カスタムオブジェクト)によって作成されます。

2.3スタック

  • スタックスペース割り当ての違い:

1.スタック(オペレーティングシステム):オペレーティングシステムは、ストアド関数のパラメーター値、ローカル変数の値などを自動的に割り当てて解放します。その動作モードは、データ構造のスタックに似ています。

単純なデータ型はスタックに格納されます

2.ヒープ(オペレーティングシステム):一般にプログラマーによって割り当てられて解放される複合型(オブジェクト)を格納します。プログラマーが解放しない場合、それらはガベージコレクションメカニズムによって再利用されます。

ここに画像の説明を挿入

  • 単純なデータ型のストレージ

    値型変数のデータは、変数(スタックスペース)に直接格納されます

ここに画像の説明を挿入

  • 複雑なデータ型のストレージ

    参照型変数(スタックスペース)はアドレスに格納され、実際のオブジェクトインスタンスはヒープスペースに格納されます

ここに画像の説明を挿入

2.4単純型パラメータ転送

関数の仮パラメーターも変数と見なすことができます。値型変数をパラメーターとして関数の仮パラメーターに渡すと、実際にはスタックスペース内の変数の値が仮パラメーターにコピーされます。その場合、メソッド内の仮パラメーターを変更しても、外部変数には影響しません。

function fn(a) {
    
    
    a++;
    console.log(a); 
}
var x = 10;
fn(x);
console.log(x)

操作の結果は次のとおりです。

2.5複雑なデータ型のパラメータの受け渡し

関数の仮パラメーターも変数と見なすことができます。参照型変数を仮パラメーターに渡すと、実際には、スタックスペースに格納されている変数のヒープアドレスが仮パラメーターと仮パラメーターにコピーされます。実際のパラメータは実際に格納されます同じヒープアドレスであるため、操作は同じオブジェクトです。

function Person(name) {
    this.name = name;
}
function f1(x) { // x = p
    console.log(x.name); // 2. 这个输出什么 ?    
    x.name = "张学友";
    console.log(x.name); // 3. 这个输出什么 ?    
}
var p = new Person("刘德华");
console.log(p.name);    // 1. 这个输出什么 ?   
f1(p);
console.log(p.name);    // 4. 这个输出什么 ?  

操作の結果は次のとおりです。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_48116269/article/details/107956655