JavaScript関数とオブジェクト

6560 ワード

関数
定義関数
  • 関数を作成するにはキーワードfunctionが必要です.後は関数名
  • です.
  • は、関数に0以上のパラメータを提供し、パラメータを使用して関数に値を伝える
  • .
  • は、この関数を呼び出した結果として値を返してもよい.これはオプションの
  • である.
  • は、関数の動作を完了するすべてのコード
  • を含む関数を作成します.
    JavaScriptには2つの方法で関数を定義しています.最初の方法は以下の通りです.
    function add(x,y) {
        return x + y;
    }
    
    なお、関数体内部のステートメントは実行時にリセットされると、関数は実行が終了し、結果を返します.したがって,関数内部は演算によって非常に複雑な論理を実現できる.return文がないと、関数は実行後も結果を返します.結果はundefinedです.
    JavaScript関数もオブジェクトであるため、上記で定義されたadd関数は実際に関数オブジェクトであり、関数名addは関数を指す変数と見なすことができる.したがって、2番目の定義関数の方式は以下の通りである.
    var add = function (x,y) {
        return x + y;
    };
    
    このように、function{....}は関数名がない匿名関数であるが、この匿名関数は変数addに与えられ、変数addを介して関数を呼び出すことができる.
    上記の二つの定義は等価であり、第二の方法は完全な文法によって、最後に一つを追加する必要がある.を選択します.
    関数宣言はスクリプト内の任意の場所に表示されます.複数の外部JavaScriptファイルを使用する場合、一つ覚えておきたいのですが、異なるファイルに同名の関数が二つあると、ブラウザで最後に見た関数を使います.
    関数を呼び出す
    関数を呼び出すときは、順番にパラメータを入力すればいいです.
    var sum = add(1,2); //  3
    
    JavaScriptは、任意のパラメータを呼び出しに影響しないように許可しているので、着信パラメータは定義されたパラメータよりも多くても大丈夫です.
    var sum = add(1,2,3); //  3
    
    着信パラメータは定義より少なくても大丈夫です.
    var sum = add(); //  NaN
    
    この場合、addのパラメータはundefinedを受け、計算結果はNaNとなります.
    変数のスコープ
    グローバル変数
    関数外で変数が宣言されている場合、この変数はグローバル変数です.JavaScriptコードのどこにでもアクセスできます.
    var x = 3; //    
    var y = 4;
    var add = function (x,y) {
    
        var z = 4; //    
    
        return x + y + z;
    }
    
    ローカル変数
    変数が関数内で宣言されている場合、この変数はローカル変数です.関数の内部でのみ使用できます.
    var x = 3; //    
    var y = 4;
    var add = function (x,y) {
    
        var z = 4; //    
    
        return x + y + z;
    }
    
    変数の昇格
    JavaScript関数の定義には特徴があります.まず関数全体のステートメントをスキャンして、すべての宣言の変数を関数の上に上げます.
    'use strict'
    
    function foo() {
        var x = "hello," + y;
        alert(x);
        y = "world";
    }
    
    foo();
    
    strictモードであるが、ステートメントvar x = "hello," + yは、変数yが後で説明されるため、エラーを報告しない.しかし、alertはハロー、undefinedを表示し、変数yの値はundefinedであると説明しています.これはJavaScriptエンジンが変数yの宣言を自動的に引き上げたためですが、変数yの割当値は上がりません.
    function foo() {
        var y; //     y   
        var x = 'Hello, ' + y;
        alert(x);
        y = 'Bob';
    }
    
    JavaScriptのこの特性のために、関数内部で変数を定義する際には、「関数内部で最初にすべての変数を宣言する」というルールを厳守してください.最も一般的な方法は、関数内部で使用される変数をvarで宣言することです.
    function foo() {
        var
            x = 1, // x    1
            y = x + 1, // y    2
            z, i; // z i undefined
        //     :
        for (i=0; i<100; i++) {
            ...
        }
    }
    
    オブジェクト
    通常のオブジェクト作成
    オブジェクトを作成
    いくつかの属性を含むオブジェクトがあります.JavaScriptを使ってこのオブジェクトを作成するにはどうすればいいですか?方法は以下の通りです
    var fido = {
        name: "Fido";
        weight: 40;
        breed: "Mixed";
        loves: ["walks","fetching balls"]
    };
    
    オブジェクトのアクセスと操作
  • 「点」を使ってオブジェクト属性にアクセスする
  • if (fido.weight > 25) {
        alert("Wonderful");
    } else {
        alert("keep moving");
    }
    
  • 一連の結合を使用して、記法アクセス属性
  • にアクセスする.
    var breed = fido["breed"];
    if (breed == "mixed") {
        alert("Best in show");
    }
    
  • 属性の値を変更する
  • fido.weight = 27; //  Fido   
    fido.loves.push("chewing bones"); //   loves         
    
  • エニュメレーションオブジェクトの全属性
  • var prop;
    for(prop in fido) {
        alert("Fido has a" + prop + " property"); //       ,  prop              
    }
    
  • 処理対象の配列
  • var likes = fido.loves;
    var likesStr = "Fido likes";
    
    for (var i = 0; i < likes.length; i++) {
        likesStr += " " + likes[i];
    }
    
  • は、関数にオブジェクト
  • に伝えられた.
    function bark(dog) {
        dog.weight = 28; //     fido   
    }
    
    bark(fido);
    
    変数にオブジェクトを割り当てると、この変数はオブジェクトのコピーではなく、オブジェクトの参照として考えられるオブジェクトの参照を含みます.この変数の属性はすべて元のオブジェクトの属性を変更します.
    上記のコードの中で、dogオブジェクトのweight属性を変更すると、コピーではなく修正された元のオブジェクトfidoの属性になります.関数の内部のdogオブジェクトだけでなく、関数の外部のfidoオブジェクトも変わります.
    オブジェクトへの追加方法
    var fido = {
        name: "Fido";
        weight: 40;
        breed: "Mixed";
        loves: ["walks","fetching balls"]
    
        bark: function() {
            alert("Woof Woof");
        }
    };
    
    fido.bark(); //    
    
    コンストラクタの作成
    構造関数
    function Dog(name,breed,weight) {
    
        this.name = name;
        this.breed = breed;
        this.weight = weight;
    
        this.bark = function() {
            if (this.weight) {
                alert(this.name + " say Woof!");
            }
        };
    }
    
                    。     ,      “;”     。this          ,             。
    
    オブジェクトを作成
    var fido = new Dog("Fido","Mixed",38); //new         
    var tiny = new Dog("Tiny","Chawalla",18);
    
    fido.bark();
    tiny.bark();
    
    prototype属性の作成対象
    prototype属性は一つのオブジェクトを含み、全てのインスタンスオブジェクトが共有する属性と方法をこのオブジェクトに入れます.それらは共有する必要がない属性と方法を、コンストラクタに入れます.
    インスタンスオブジェクトが作成されると、プロトタイプオブジェクトの属性と方法が自動的に参照されます.すなわち、インスタンスオブジェクトの属性と方法は、ローカルであり、引用である2つに分類される.
      function DOG(name){
        this.name = name;
      }
      DOG.prototype = { species : '  ' };
    
      var dogA = new DOG('  ');
      var dogB = new DOG('  ');
    
      alert(dogA.species); //   
      alert(dogB.species); //   
    
    現在、species属性はprototypeオブジェクトにおいて、二つのインスタンスオブジェクトが共有されています.プロトタイプオブジェクトを修正すると、同時に二つのインスタンスオブジェクトに影響を与えます.
      DOG.prototype.species = '  ';
    
      alert(dogA.species); //   
      alert(dogB.species); //   
    
    以上のように、全てのインスタンスオブジェクトが同じプロトタイプのオブジェクトを共有しているため、凶悪な外部から見て、プロトタイプオブジェクトはインスタンスオブジェクトのプロトタイプのように見えますが、インスタンスオブジェクトはプロトタイプのオブジェクトを継承しているように見えます.
    windowオブジェクト
    windowオブジェクトはあなたのJavaScriptプログラムのグローバル環境を表しています.同時にアプリケーションのメインウィンドウも表しています.したがって、多くのコアの属性と方法が含まれています.
    Widwo??--?----?location属性124124124124;はページのURLを含む124124124124124124124124124124124124124124124124124124124124124124124;属性は、ブラウザのステータスエリアに文字列列列を表示する124124124124124124124124; 124124124124124; 124124124124124124124124124124124124124124124124124124124;の属性124124124124124124124124124124124124124124124124124124124124124;ページが完全にページがロードされているページが完全にロードされた後にロードされているという機能を含む124124124124124124124124124124124124124124124124124124124124124124124124124124124個のリマインダのprompt 124方法はalertに類似しています.しかし、ユーザから情報まで新しいブラウザウィンドウを開くことができます.ウィンドウを閉じます.ウィンドウを閉じて、指定された時間間隔で処理プログラムを呼び出します.
    windowは全体の対象です.前にwindowをつけなくても、windowの属性や方法名はスムーズに解析できます.
    documentオブジェクト
    documentは実はwindowオブジェクトの一つの属性で、主にDOMを訪問するために使用されます.
    元素オブジェクト
    要素オブジェクトとは、getElementById法で返したオブジェクトです.
    締めくくりをつける
    window.onload=init();関数init window.onload=initを呼び出したいです.initという関数の値をonload属性に割り当てることを表します.