「JavaScript高級プログラム設計」ノート(1)

4289 ワード

データの種類
5種類の単純データタイプ(基本データタイプ):Unidefined、Null、Boolean、Number、Steringの1種類の複雑なデータタイプ:Object
変数、スコープ、メモリの問題
関数のパラメータは値で伝達されます.*ECMAScript関数のパラメータを局所変数として想像できます.*例1:
function addTen(num) {     
   num += 10;
   return num; }
   var count = 20;
var result = addTen(count);
alert(count);   //20,     
alert(result);  //30  
例2:
function setName(obj) {
     obj.name = "Nicholas"; }  
var person = new Object();
setName(person);
alert(person.name);    //"Nicholas"
例3:
function setName(obj) {
     obj.name = "Nicholas";
     obj = new Object();
     obj.name = "Greg"; }  
var person = new Object(); 
setName(person); 
alert(person.name);    //"Nicholas" 
検出タイプ
*typeof**
var n == null;
alert(typeof n);   //object
instance of
alert(colors instanceof Array);  //    colors   Array  ?```
##      
function buildUrl(){var qs="?debug=true";with(location){var url=href+qs]//実際にはlocation.href}returnurlを引用しました.
ブロックレベルのスコープがありません.
for (var i=0; i < 10; i++){
     doSomething(i); }  
alert(i);      //10 
参照の種類
Arayタイプ
toLocale String()、toString()とvalueOf()メソッドjin()
スタック方法
push()、pop()
キューの使い方
push()、shift()//取出第一項unshift()//追加第一項、pop()逆方向
並べ替え
reverse()//逆順、sort()//値の昇順比較:
funtion compare(val1,val2){
    return val2 - val1;
}
var values = [0, 1, 5, 10, 15]; 
values.sort(compare); 
alert(values);    // 15,10,5,1,0
操作方法
splice()
  • 削除:任意の数の項目を削除してもいいです.2つのパラメータを指定してください.削除する最初の項目の位置と削除するエントリの数.例えば、splice(0,2)は、配列の最初の2つを削除します.
  • 挿入:指定された位置に任意の数の項目を挿入することができます.3つのパラメータが必要です.開始位置、0(削除すべき項数)、挿入する項目.複数の項目を挿入すると、第四、第五、ひいては任意の項目に入ることができます.例えば、splice(2,0,「red」,「green」)は、現在の配列の位置2から文字列「red」と「green」を挿入します.
  • の代わりに、指定された位置に任意の数の項目を挿入し、任意の数の項目を同時に削除することができます.3つのパラメータを指定するだけで、開始位置、削除すべき件数、挿入するべき任意の数の項目を指定します.挿入された項の数は、削除された項の数に等しい必要はありません.例えば、splice(2,1,「red」,「green」)は、現在の配列位置2の項目を削除し、位置2から文字列「red」と「green」を挿入します.
  • 位置方法(ES 5追加)
    indexOf()
    反復方法(ES 5追加)
  • every():行列内の各項目に対して関数を実行し、各項目に対してtrueを返すとtrueに戻ります.
  • **filter()*:配列内の各動作に与えられた関数を返します.この関数はtrueの項目からなる行列を返します.
  • forEach()は、配列内の各項目に対して与えられた関数を実行します.この方法は戻り値がない
  • map():配列内の各項目に対して与えられた関数を実行し、各関数呼び出しの結果からなる行列を返します.
  • some():配列内の各項目に対して関数を実行します.関数がどれかの項目に対してtrueを返すと、trueに戻ります.以上の方法は、配列に含まれる値を変更しません.*
  • 正規化方法(ES 5追加)
    reduce()とreduceRight()の反復配列のすべての項目は、最終的に返される値を構築します.
    var values = [1,2,3,4,5];
     var sum = values.reduce(function(prev, cur, index, array){
         return prev + cur;
      });
     alert(sum); //15  
    
    関数の種類
    関数はオブジェクトであり、関数名は、ポインタが、括弧を持たない関数名を使用して、関数ポインタにアクセスします.関数式については、解像度がそのコード行に実行されるまで、本当に解釈されて実行される必要があります.例:
    alert(sum(10,10)); 
    function sum(num1, num2){
         return num1 + num2;
     }
    //    
    
    alert(sum(10,10));
     var sum = function(num1, num2){
         return num1 + num2;
     };
    //  
    
    行列は、オブジェクトの属性に従って並べ替えられます.
    function createComparisonFunction(propertyName) {  
        return function(object1, object2){
            var value1 = object1[propertyName]; 
            var value2 = object2[propertyName];  
            if (value1 < value2){
                 return -1;
             } else if (value1 > value2){
                 return 1;
             } else {
                 return 0;
             } 
        }; } 
    var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];  
    data.sort(createComparisonFunction("name")); 
    alert(data[0].name);  //Nicholas  
    data.sort(createComparisonFunction("age")); 
    alert(data[0].name);  //Zachary 
    
    apply()とcall()
  • 伝参
  • 拡張機能領域
  • window.color = "red"; 
    var o = { color: "blue" };  
    function sayColor(){
         alert(this.color); 
    }  
    sayColor();                //red  
    sayColor.call(this);       //red
    sayColor.call(window);     //red 
    sayColor.call(o);          //blue  
    
    bind()方法は、bind()関数に伝える値(ES 5追加)に結合される関数の例を作成します.
    window.color = "red"; 
    var o = { color: "blue" };  
    function sayColor(){
         alert(this.color);
     } 
     var objectSayColor = sayColor.bind(o); 
    objectSayColor();    //blue