「JavaScript高級プログラム設計」

4398 ワード

一、基本概念
1、パーrseInt、パーrseFloat
parseInt('123',10) //           ,   10
parseFloat('12.12') //        
parseFloat('12.12.123') //  12.12          ,     
二、変数、作用領域とメモリの問題
1、Steringタイプ:
ECMAScriptでは、文字列は参照タイプではありません.
2、ゴミ収集
##     Null,         。
function createPerson(name){
    var localPerson = new Object();
    localPerson.name = name;
 }
var globalPerson = createPerson("Nicholas"); 
globalPerson = null;  //      globalPerson    ,         
リボン:
JavaScript変数には2つのタイプがあります. .
  • 基本タイプは、UndefinedNullBooleanNumberString 、および の5つの基本データタイプを含む.
  • 参照タイプ:オブジェクト.
  • 基本タイプ値および参照タイプ値は、メモリ内の 値であるため、 において、以下の特徴がある.一つの変数から他の変数に基本型の値をコピーすると、この値のコピーが作成されます. の値は 中である.参照型の値を含む変数は、実際には対象自体ではなく、オブジェクトを指すポインタが含まれています.一つの変数から他の変数 にコピーされた は、最終的に です.値はどの typeofオペレータを使用することができるかを決定し、値はどの instanceofオペレータを使用することができるかを決定する.作用域から離れる値は自動的に回収可能としてマークされますので、ゴミ収集中に削除されます.“ ”は現在主流のゴミ収集アルゴリズムであり、このアルゴリズムの思想は であり、その後メモリを再回収する.
    三、引用の種類
    1、アラy
    ## 1、toString()、toLocalString()、valueOf()
    var colors = ["red", "blue", "green"]; //        3        
     console.log(colors.toString());  // "red,blue,green"
     console.log(colors.valueOf());  // ["red","blue","green"]
     console.log(colors);  // ["red","blue","green"]
    
    2、Arayの反復方法
    各方法は、2つのパラメータを受信します.各項目で実行する関数と、その関数を実行するスコープオブジェクトと、thisに影響を与える値です.これらの方法に入ってくる関数は、3つのパラメータを受信する. .
    every():配列内の各動作に与えられた関数がある場合、関数ペア がtrueに戻ると、trueに戻ります.some():配列内の各動作に与えられた関数が与えられています.関数が にtrueを返したら、trueに戻ります.filter():配列内の各動作に与えられた関数を返してtrueの項からなる を返します.forEach():配列内の各動作に与えられた関数です.この方法は です.map():配列内の各項目に対して与えられた関数を実行し、関数ごとに呼び出された結果からなる行列を返します.
    以上の方法は、配列に含まれる値を変更しません.
    ## every()、some()
    var numbers = [1,2,3,4,5,4,3,2,1];
    var everyResult = numbers.every(function(item, index, array){
        return (item > 2);
    });
    alert(everyResult); //false
    var someResult = numbers.some(function(item, index, array){
        return (item > 2);
    });
    alert(someResult); //true
    
    ## filter()
    var numbers = [1,2,3,4,5,4,3,2,1];
    var filterResult = numbers.filter(function(item, index, array){
        return (item > 2);
     });
    alert(filterResult);   //[3,4,5,4,3]
    
    ## map()
    var numbers = [1,2,3,4,5,4,3,2,1];
    var mapResult = numbers.map(function(item, index, array){
        return item * 2;
    });
    alert(mapResult);  //[2,4,6,8,10,8,6,4,2]
    
    ## forEach()
    var numbers = [1,2,3,4,5,4,3,2,1];
    numbers.forEach(function(item, index, array){
      item++;
    });
    console.log(numbers); // [1,2,3,4,5,4,3,2,1]
    
    forEachは戻り値がないので、最初のパラメータの関数は元の配列に影響を及ぼさないので、この方法は基本的に遍歴のみに適用されます.
    3、Arayの並び替えsort(function(a,b){…)
    コールバック関数:a < b に戻ると a、b になる. を返したら a、b .0なら です.
    var a = [0,4,5,20,12,25,15];
    a.sort(function(a,b){
      return a-b;  //     
      return b-a;  //     
    })
    
    四、対象に向ける
    1、継承する
    /**
     *      -- prototype
     */
    function Animal() {
      this.name = 'animal';
    }
    Animal.prototype.sayName = function() {
      alert(this.name);
    };
    
    function Person() {}
    console.log(Person.prototype.constructor);  // [Function: Person]
    
    //       
    Person.prototype = Animal.prototype;
    console.log(Person.prototype.constructor); // Function: Animal]
    
    //           
    Person.prototype.constructor = 'Person';
    var person = new Person();
    console.log(Person.prototype);  // { sayName: [Function] }
    console.log(person.__proto__);  // { sayName: [Function] }
    console.log(person.__proto__ === Person.prototype); // true
    /**
     *  ************************************
     *  *********          __proto__              prototype       。
     *  ************************************
     */