ES 5構文

15377 ワード

ES 5の新しい文法は主にObjectと、Array操作に現れ、同時にJSON、Function、DateとStringタイプに関連している.
1.Object
ES 5の最大の特徴はオブジェクト拡張の多くの方法である.
≪新規オブジェクト|New Objects|emdw≫:create(「クリーン」オブジェクトを新規作成します.ここで「クリーン」とは、プロトタイプチェーンがないことを意味します.)
構文:Object.create(proto, [ propertiesObject ]);      proto , 。       proto null , TypeError 。null ( ” ”) 
propertiesObjectは、4つの値と2つの関数を持つペアです.
  • value:プロパティの値
  • を設定します.
  • writable:ブール値、属性が書き換えられるかどうかを設定し、デフォルトの属性値はfalse(書き換えられない)
  • です.
  • enumerable:ブール値、属性を列挙できるかどうかを設定します.デフォルトの属性値はfalse(列挙できません)
  • です.
  • configurable:ブール値、設定属性が削除できるかどうか、デフォルト属性値はfalse(削除できない)
  • である.
    2つの関数:
  • get:関数、設定属性は結果
  • を返します.
  • set:関数、パラメータ
  • 具体的な使い方を見てみましょう.
       writable:
    var account = Object.create(Object.prototype,{
       type: {
           value: "    ",
           //enumerable: false
           //configurable: false
           writable: false
       }
       });
         account.type="    ";
         console.log(account.type);  
        //    ,  writable   false          

      configurable:
    var account = Object.create(Object.prototype,{
       type: {
           value: "    ",
           //enumerable: false
           configurable: false,
           writable: false
       }
       });account.type="    ";
          delete account.type;
         console.log(account.type);  
        //    ,configurable: false          

      enumerable:
    var account = Object.create(Object.prototype,{
       type: {
           value: "    ",
           enumerable: true,
           configurable: false,
           writable: false
       }
       });
    for(var i in account){
        console.log(account[i]);   
       //    ,  enumerable true,    undefined
    }

    getとsetの使い方
    注意:これはプロパティを取得および設定するための値です.writableと一緒に使用できません.そうしないと、次のようにエラーが発生します.
    function defineGetter(obj, name, getter) {
      Object.defineProperty(obj, name, {
        configurable: true,
        enumerable: true,
        get: getter
      });
    }; 
    var req = {};
    defineGetter(req, 'xhr', function xhr(){
      var val = 'xmlhttprequestx' || '';
      return val.toLowerCase() === 'xmlhttprequest';
    });
    console.log(req.xhr);  
    //false

    属性の設定:defineProperty(0 bj)と複数の属性defineProperties(Obj)の設定.
    オブジェクトのフリーズ:
    Seal(obj)対応:Object.isSealedfreeze(obj)対応:Object.isFrozen( seal(obj) , , :writable:false,configureable:false);
    巡回プロパティ:
       Object.getOwnPropertyNames
       Object.keys
    keysは、すべてのenumerableがtrueである値をリストし、1つのオブジェクトが空のオブジェクトであるかどうかを判断するのに便利です.のように
    (options.meta && Object.keys(options.meta).length)?“options  ”:options    

    次のようになります.
    var obj = {
        "x":"y",
        "x1":"y1"
    };
    var keys = Object.keys(obj);
    console.log(keys);
    //["x","x1"]  

    getownPropertyNameは、すべてのdefinePropertyメソッドをリストするために設定された値です.
    var obj ={"attr1":"xyz"};
    Object.defineProperty(obj,'type',{
           value: "    ",
           enumerable: false,
           configurable: true,
           writable: false
       });
    var getPro = Object.getOwnPropertyNames(obj);
    console.log(getPro); //["attr1","type"]
    Object.keys(obj);// ["attr1"]
    
    Object.defineProperty(obj,'type',{
           value: "    ",
           enumerable: true,
           configurable: true,
           writable: false
       });
    var getPro = Object.getOwnPropertyNames(obj);
    console.log(getPro); //["attr1","type"]
    Object.keys(obj);// ["attr1","type"]

    オブジェクトをロック
      Object.preventExtensions(O)はObjectに対応する.isExtensible:
    メソッドは、オブジェクトの属性をロック、拡張できない、つまり新しい属性を増やすことはできないが、属性の値を変更することもできるし、属性を削除することもできる.isExtensibleは,オブジェクトが拡張可能か否かを判断するために用いられる.
     1 var o = {};
     2 console.log(Object.isExtensible(o));   //true
     3 o.lastname ="yinlei";
     4 Object.preventExtensions(o);
     5 console.log(Object.isExtensible(o));   //false
     6 console.log(o.lastname);                  //yinlei
     7 o.firstname="liu";
     8 console.log(o.firstname);                //undefined
     9 delete o.lastname;                        
    10 console.log("lastname="+o.lastname);   //undefined   

    Object.getOwnPropertyDescriptor(O,property)
    このメソッドは、definePropertyメソッドが設定したpropertyプロパティを取得するために使用されます.
    var account = Object.create(Object.prototype,{
       type: {
           value: "    ",
           enumerable: false,
           configurable: false,
           writable: false
       }
       });
    var getPro = Object.getOwnPropertyDescriptor(account,'type');
    console.log(getPro);
    //Object {value: "    ", writable: false, enumerable: false, configurable: false}

    2.use strict
    厳格モードの規定:
  • 宣言されていない変数付与値は、グローバル変数を作成するのではなく、ReferenceErrorを放出する.
  • は、オブジェクトの字面量に同じ属性を一度だけ割り当てることなく、SyntaxError。
  • を投げ出す.
  • with文を使用してSyntaxError。
  • を放出する.
  • 変数は宣言後に使用する必要があります.

  • 3.Array
    Arrayには、データ型が配列であるか否かを判断する静的方法が構築されている
    Array.isArray(["3","4"]);
    //true
    Array.isArray({"x":"y"});
    //false

    配列を操作する方法も多数用意されています.
    その中で最も有用なのは、indexOf、map、reduce、filter、forEachの5つで、この5つの方法は字面の意味によってよく理解されています.
    4.Dateタイムスタンプの取得
    var date = new Date();
    //1480312139830
    console.log(date.getTime());
    
    //ES5
    Date.now()      //Date        now()    
     

    5.Function.prototype.bind(this,arg1,arg2)
    1 function A(x){
    2     this. x = x;  
    3 }
    4 
    5 function B(y){
    6     console.log(this.x + ":y=" + y );
    7 }
    8 B.bind(new A(5),6)();

    もう一つの書き方があります.
    /*express-mysql-session  */
    var done = function() {
        this.setExpirationInterval();
        if (cb) {
            cb.apply(undefined, arguments);
        }
    }.bind(this);

     
    6.String.prototype.trim
    var str = " hello world "; 
    console.log(str.trim()); //    jquery  $.trim()   
    //hello world
    

    7.JSONの二つの方法
    //          
    JSON.stringify(obj);  //obj ---> str
    JSON.parse(str);   //str ---> json
    JSON.stringify(value[, replacer[, space]])
    value , 。
    replacer , , , , value key val, , value 。
    space , 、
    code:
    (runoob.com) <span style="color:#0000ff;">var</span> str = {"name":" ", "site":"http://www.runoob.com"<span style="color:#000000;">} </span><span style="color:#008000;">//</span><span style="color:#008000;">{"name":" ","site":"http://www.runoob.com"}</span> str_pretty1 =<span style="color:#000000;"> JSON.stringify(str) document.write( </span>" :"<span style="color:#000000;"> ); document.write( </span>"<br>"<span style="color:#000000;"> ); document.write(</span>"<pre>" + str_pretty1 + "</pre>"<span style="color:#000000;"> ); document.write( </span>"<br>"<span style="color:#000000;"> ); </span><span style="color:#008000;">//</span><span style="color:#008000;">9</span> str_pretty2 = JSON.stringify(str, <span style="color:#0000ff;">function</span>(){<span style="color:#0000ff;">return</span> 9;}, 4) <span style="color:#008000;">//</span><span style="color:#008000;"> </span> document.write( " :"<span style="color:#000000;"> ); document.write( </span>"<br>"<span style="color:#000000;"> ); document.write(</span>"<pre>" + str_pretty2 + "</pre>" ); <span style="color:#008000;">//</span><span style="color:#008000;"> pre </span>  
        
    転載先:https://www.cnblogs.com/liuyinlei/p/6101674.html