javascript基礎(次日)

開胃菜:  若是複製一個數組(淺copy)?javascript

開始的一句話: http://www.w3school.com.cn/  js犀牛書, js高級程序設計, 生活必備, 推薦買js犀牛書<javascript權威指南>

Booleanjava

   !!  //強制類型轉換git

   !![] //true數組

   !!{} //true閉包

   !!'false' //trueapp

Numberdom

   Number.MAX_VALUE  //倒序遍歷設初始值的時候頗有用性能

   Number.MIN_VALUE優化

   (2.1234).toFixed(2)      //2.12 (會四捨五入,在截取四捨五入的時候, 精度丟失,不是很準確 (四捨六入五成雙) )控制小數點0-20this

        (2.444).toFixed(2); //"2.44"

        (2.445).toFixed(2); //"2.44" 異常

        (2.446).toFixed(2); //"2.45"

        (2.4444).toFixed(3); //"2.444"

        (2.4445).toFixed(3); //"2.445" 正確

        (2.4446).toFixed(3); //"2.445"      

       /*
       * 模擬Math.toFixed()方法 ------->感謝剛哥貢獻
       * 優化: 四捨五入精度不許確問題(四捨六入五成對)
       */
       function toFixed2(number,fractionDigits){
              return Math.round(number*Math.pow(10,fractionDigits))/Math.pow(10,fractionDigits);
       }
       console.log( toFixed2(2.224,2) ); //2.22
       console.log( toFixed2(2.225,2) ); //2.23
       console.log( toFixed2(2.226,2) ); //2.23
       console.log( toFixed2(2.2224,3) ); //2.222
       console.log( toFixed2(2.2225,3) ); //2.223
       console.log( toFixed2(2.2226,3) ); //2.223

   Math.PI.toPrecision(7);  //"3.141593" 轉成10進制形式的字符串.

String

    字符串建立後不可修改

    var s = 'abcd';

    console.log(s[1]);

    s[1]='e';

    console.log(s[1]);

    console.log(s);

    " xx ".trim();  //這個應該是es3的

    'abcd'.localeCompare('abcd'); //0

   'XxX'.toLowerCase();   //xxx  轉小寫

   'XxX'.toUpperCase();   //XXX 轉大寫

   split(字符串或者正則,數組的最大長度);  

   'abcdefg'.substr(開始位置,長度);  'abcdefg'.substr(0); //截取到結尾

   'abcdefg'.substring(開始位置,結束位置);  'abcdefg'.substring(0); //截取到結尾

        var a = 'abcd';

        var b= a.substr(0);

        var c = a;

        b='bbbb';

        c='cccc';

        console.log(a);  //abcd

   'abcdefg'.slice(開始位置,結束位置);  'abcdefg'.slice(0); //截取到結尾

   'abcdefgc'.search(/*正則*/  /C/img); //第一個與 regexp 相匹配的子串的起始位置,沒找到-1

   replace(正則或者字符串, 替換字符串);

         var a = 'abcdefgc'; a.replace('c','z');            //abzdefgc

         var a = 'abcdedgc'; a.replace(/C/img,'z');    //abzdefgz 

         var a = 'abcdedgc'; a.replace(/C/img,'z');    console.log(a);  //abcdedgc 返回新串,不修改原來的喲

   match(正則或者字符串); 

         'abcdefgc'.match('c'); //['c']

         'abcdefgc'.match(/C/img) //["c", "c"] 返回一個匹配的數組

   indexOf(檢索字符串,開始位置); 從前日後, 返回檢索位置,沒找到-1

   lastIndexOf(檢索字符串,開始位置); 從後往前, 返回檢索位置,沒找到-1

   concat(鏈接的一個或者多個字符串);

       var a = 'abcdefg';

       a.concat('hijklmn');

       console.log(a); //abcdefg,返回新串,不修改原來的喲

   charAt(索引位置);返回對應字符

       'abcd'.charAt(200); //'' 找不到返回空字符串

   charCodeAt(索引位置);返回對應字符Unicode 編碼

       'abcd'.charCodeAt(200); //NaN 找不到NaN

Date

   var  data = new Date();

   http://blog.csdn.net/hudashi/article/details/7069600    //關於GMT UTC的介紹

 

   GMT就是格林尼治標準時間,它是Greenwich mean time的簡稱。

 

   UTC則是協調世界時間,它是coordinated universal time的時間。它是一種更精確的GMT。

 

   getDate() 從 Date 對象返回一個月中的某一天 (1 ~ 31)。
   getDay() 從 Date 對象返回一週中的某一天 (0 ~ 6)。
   getMonth() 從 Date 對象返回月份 (0 ~ 11)。
   getFullYear() 從 Date 對象以四位數字返回年份。
   getHours() 返回 Date 對象的小時 (0 ~ 23)。
   getMinutes() 返回 Date 對象的分鐘 (0 ~ 59)。
   getSeconds() 返回 Date 對象的秒數 (0 ~ 59)。
   getMilliseconds() 返回 Date 對象的毫秒(0 ~ 999)。
   getTime() 返回 1970 年 1 月 1 日至今的毫秒數。

RegExp

    var r = new RegExp("aaa","img");  <==> var r = /aaa/img;

   exec(待檢驗的字符)

       /c/img.exec('abcdefgc');  //['c']

       new RegExp("c","img").exec('abcdedgc'); //['c']

   test(待檢驗的字符);

      var a='abcd';

      var r = new RegExp('c','img');

      var r2 = /c/img;

      console.log( r.test(a) );  //true

      console.log( r2.test(a) ); //true

Error

    EvalError: 錯誤發生在eval()中
    SyntaxError: 語法錯誤,錯誤發生在eval()中,由於其它點發生SyntaxError會沒法經過解釋器
    RangeError: 數值超出範圍
    ReferenceError: 引用不可用
    TypeError: 變量類型不是預期的
    URIError: 錯誤發生在encodeURI()或decodeURI()

    throw new Error(0,」Error Demo」);
    throw({name:'name',message:'message'});

Function

    apply(那個指定的對象, 參數數組)

        var a = {0:'bbb',1:'ccc',length:2};

        [].slice.apply(a);  //["bbb", "ccc"]

    call(那個指定的對象, 參數1,參數2,....無限.....);

        var a = {0:'bbb',1:'ccc',length:2};

        [].slice.call(a);  //["bbb", "ccc"]

        //下面是易懂的小例子

        function a(param1,param2){
                this.b = param1;
                this.c = param2;
        }
        var obj = {};
        var t1 = a.apply(obj,['bbb1','ccc1']);
        console.log(obj);
        var t2 = a.call(obj,'bbb2','ccc2');
        console.log(obj);

 

    arguments.callee;  //性能很差,不推薦使用

        function a(num){
            if(num){
                console.log(arguments.callee()+" come in");
            }else{
                return "tm";
            }
        }
        a(3);  //tm come in

    閉包

    function a(){
        var v = 'vvv';
        function f(){
            return v;
        }
        return f();
    }
    console.log( a() ); //vvv

Array

    delete

       var a =[1,2,3]; delete a[1]; a; //[1, undefined × 1, 3]

    pop(); //刪除尾部元素,並返回刪除元素, 沒刪掉返回undefined

       var a = []; a.pop(); a; //[];

    push();添加尾部一個或更多元素,並返回length,

    shift(); 用於把數組的第一個元素從其中刪除,並返回第一個元素的值。

       var a = []; a.shift(); //undefined;

    unshift();數添加開頭一個或更多元素,並返回length

    reverse(); 顛數組中元素的順序,改變原數組嗎?

    sort(); 排序,改變原數組嗎?

       [1,3,2,6,5,4].sort(); //[1, 2, 3, 4, 5, 6]

       ['1','3','2','11','12'].sort(); //["1", "11", "12", "2", "3"];

       ['1','3','2','11','12'].sort(function(a,b){return a-b}); //["1", "2", "3", "11", "12"]

    concat(); 鏈接兩個或更多的數組,並返回新數組,改變原數組嗎?

       var a = [1,2,3]; b=[4,5,6]; a.concat(b); a;

       var a = [1,2,3]; b=[4,5,6]; var c = a.concat(b,b,b); c;

    join(); 把數組的全部元素放入一個字符串。元素經過指定的分隔符進行分隔。

    slice(開始位置,結束位置); 從某個已有的數組返回選定的元素

       var a = [1,2,3];  var b= a.slice(); console.log(b);

    splice(刪除位置,刪除數量,替換的新項目能夠多個); 返回值是刪除的元素數組, !!!重點方法, 增/刪/改 全活.!!!! 改變原數組嗎?

        //增

        var a = [4,5,6]; a.splice(2,0,'x');  a;  //在刪除位置的前面新增

        //刪

        var a = [4,5,6]; a.splice(2,1); a;

        //改

        var a = [4,5,6]; a.splice(2,1,'x'); a;

Object

   //全部的對象都繼承於object.prototype

    typeof null === 'object'  //true

    hasOwnProperty(); //判斷屬性是不是當前對象    

    var a = {b:'bbb',c:'ccc'};
    var b = function(){
        this.d='ddd';
    };
    b.prototype = a;
    var bb = new b();
    console.log( bb.hasOwnProperty('b') ); //false
    console.log( bb.hasOwnProperty('d') ); //true

    for(var i in bb){
        if( bb.hasOwnProperty(i)){
            console.log(i);
        }
    }

    isPrototypeOf();  判斷實例是否在某原型鏈上

       var s = 'dd'; String.prototype.isPrototypeOf(s);         //false

       var s = new String('dd'); String.isPrototypeOf(s);      //false

       var s = new String('dd'); String.prototype.isPrototypeOf(s);      //true

      

    propertyIsEnumerable(); //是否可枚舉(for in)

       Object.propertyIsEnumerable('toString');     //false

       Object.propertyIsEnumerable('__proto__'); //false

       ({a:'a'}).propertyIsEnumerable('a');  //true;

    toLocaleString();

        new Date().toLocaleString();  //"2015/5/7 下午12:16:24"

    toString();

        function a(){}; a.toString(); //"function a(){}"

    valueOf();

        new Number(2).valueOf() === 2 //true

//------------------------------------------------------------------------------------

全局方法

Math

      http://www.w3school.com.cn/jsref/jsref_obj_math.asp

      abs(x) 返回數的絕對值。
      acos(x) 返回數的反餘弦值。
      asin(x) 返回數的反正弦值。
      atan(x) 以介於 -PI/2 與 PI/2 弧度之間的數值來返回 x 的反正切值。
      atan2(y,x) 返回從 x 軸到點 (x,y) 的角度(介於 -PI/2 與 PI/2 弧度之間)。
      ceil(x) 對數進行上舍入。
      cos(x) 返回數的餘弦。
      exp(x) 返回 e 的指數。
      floor(x) 對數進行下舍入。
      log(x) 返回數的天然對數(底爲e)。
      max(x,y) 返回 x 和 y 中的最高值。
      min(x,y) 返回 x 和 y 中的最低值。
      pow(x,y) 返回 x 的 y 次冪。
      random() 返回 0 ~ 1 之間的隨機數。
      round(x) 把數四捨五入爲最接近的整數。
      sin(x) 返回數的正弦。
      sqrt(x) 返回數的平方根。
      tan(x) 返回角的正切。
      toSource() 返回該對象的源代碼。
      valueOf() 返回 Math 對象的原始值。

//打印window

 

decodeURI

decodeURIComponent

encodeURI

encodeURIComponent

eval

isFinite

isNaN

parseInt

parseFloat

相關文章
相關標籤/搜索