最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析JavaScript 箭頭函數(shù) generator Date JSON

 更新時間:2016年05月23日 09:16:24   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\析JavaScript 箭頭函數(shù) generator Date JSON。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

ES6 標(biāo)準(zhǔn)新增了一種新的函數(shù): Arrow Function(箭頭函數(shù))。

    x => x *x
    上面的箭頭相當(dāng)于:
      function (x){ 
          return x*x;
      }

箭頭函數(shù)相當(dāng)于匿名函數(shù),并且簡化了函數(shù)定義。一種像上面的,只包含一個表達式,

連{ ... }和return都省略掉了。還有一種可以包含多條語句,這時候就不能省略{ ... }和return:

        x =>{ 
          if(x > 0){ 
            return x * x;
          }else{ 
            return -x *x;
          }
        }

如果參數(shù)不是一個,就需要用括號()括起來:

    // 兩個參數(shù)
      (x,y) => x*x + y *y
    // 無參數(shù);
      () =>3.14
    // 可變參數(shù)
      (x,y,...rest) =>{ 
        var i, sum = x +y;
        for(i=0;i<rest.length;i++){ 
          sum += rest[i];
        }
      return sum;
    }

this

現(xiàn)在,箭頭函數(shù)完全修復(fù)了this的指向,this總是指向詞法作用域,也就是外層調(diào)用者obj:

    var obj = { 
        birth:1990,
        getAge:function(){ 
        var b = this.birth; // 1990
        var fn = () => new Date().getFullYear() - this.birth; // this指向obj 對象。
        return fn();
        }
    }
    obj.getAge(); // 25

如果使用了箭頭函數(shù),以前的那種hack 寫法;

var that = this;

就不再需要了。

由于this 在箭頭函數(shù)中已經(jīng)按照是否作用域綁定了,所以,用call() 或者apply() 調(diào)用箭頭函數(shù)時,無法對this 進行

綁定,即傳入的第一個參數(shù)被忽略。

    var obj = { 
        birth:1990,
        getAge:function(year){ 
          var b = this.burth; // 1990
          var fn = (y) =>y-this.birth; // this.birth 仍是1990
          return fn.call({birth:2000},year);
      }
    };
    obj.getAge(2015); // 25

generator

generator(生成器)是ES6標(biāo)準(zhǔn)引入的新型數(shù)據(jù)類型。一個generator看上去像一個函數(shù),但可以返回多次。

    function* foo(x){ 
        yield x +1;
        yieldx + 2;
        return x +3;
    }

generator 和函數(shù)不同的是,generator由function* 定義(注意多出的*號),并且,除了return 語句,還可以用yield 返回多次。

函數(shù)只能返回一次,所以碧璽返回一個Array. 但是,如果換成generator,就可以一次返回一個數(shù),不斷返回多次。

    function* fib(max){ 
        var t,
        a = 0,
        b=1,
        n=1;
        while (n < max){ 
          yield a;
          t = a +b;
          a = b;
          b = t;
          n++;
        }
        return a; 
      }

直接調(diào)用試試:

fib(5); // fib {[[GeneratorStatus]]: "suspended", [[GeneratorReceiver]]: Window}

直接調(diào)用一個generator和調(diào)用函數(shù)不一樣,fib(5)僅僅是創(chuàng)建了一個generator對象,還沒有去執(zhí)行它。

調(diào)用generator對象有兩個方法,一是不斷地調(diào)用generator對象的next()方法:

    var f = fib(5);
    f.next(); // {value: 0, done: false}
    f.next(); // {value: 1, done: false}
    f.next(); // {value: 1, done: false}
    f.next(); // {value: 2, done: false}
    f.next(); // {value: 3, done: true}

Date

在JavaScript 中,Date 對象用來表示日期和時間的。

要獲取系統(tǒng)當(dāng)前時間,用:

    var now = new Date();
    now; //// Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
    now.getFullYear(); //2015,年份
    now.getMonth(); // 5,月份,注意月份范圍為0~11,5表示六月
    now.getDate();// 24 ,表示24 號
    now.getHours(); // 3,表示星期三
    now.getMinutes(); // 19 ,24小時制
    now.getSeconds(); // 22,秒
    now.getMilliseconds(); //875 毫秒
    now.getTime(); // 1435146562875, 以number形式表示的時間戳
    如果要創(chuàng)建一個執(zhí)行日期和時間的Date對象,可以用:
    var d = new Date(2015,5,19,20,15,30,123);
    d;// Fri Jun 19 2015 20:15:30 GMT+0800 (CST)

JSON

JSON是JavaScript Object Notation的縮寫,它是一種數(shù)據(jù)交換格式。

在JSON中,一共就這么幾種數(shù)據(jù)類型:

1,number: 和JavaScript的 number 完全一致;

2,boolean: 就是JavaScript的 true或 false;

3,String: 就是JavaScript的String ;

4,null: 就是JavaScript的null;

5,array: 就是JavaScript 的Array 表示方式——[];

6,object: 就是JavaScript 的{...} 表示方式。

SON還定死了字符集必須是UTF-8,表示多語言就沒有問題了。為了統(tǒng)一解析,JSON的字符串規(guī)定必須用雙引號"",Object的鍵也必須用雙引號""。

序列化

var guagua = {
name: '小明',
age: 14,
gender: true,
height: 1.65,
grade: null,
'middle-school': '\"W3C\" Middle School',
 skills: ['JavaScript', 'Java', 'Python', 'Lisp']
};
 JSON.stringify(xiaoming); // '{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"

middle-school":"\"W3C\" Middle School","skills":  ["JavaScript","Java","Python","Lisp"]}'

結(jié)果:

  {
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" Middle School",
"skills": [
  "JavaScript",
  "Java",
  "Python",
  "Lisp"
  ]
  }

第二個參數(shù)用于控制如何篩選對象的鍵值,如果我們只想輸出指定的屬性,可以傳入Array:

JSON.stringify(xiaoming, ['name', 'skills'], ' ');

結(jié)果:

{
  "name": "guagua",
  "skills": [
  "JavaScript",
  "Java",
  "Python",
  "Lisp"
]
  }

還可以傳入一個函數(shù),這樣對象的每個鍵值對都會被函數(shù)先處理:

function convert(key, value) {
if (typeof value === 'string') {
  return value.toUpperCase();
}
  return value;
}
JSON.stringify(guagua, convert, ' ');

上面的代碼把所有屬性值都變成大寫:

{
  "name": "guagua",
  "age": 14,
  "gender": true,
  "height": 1.65,
  "grade": null,
  "middle-school": "\"W3C\" MIDDLE SCHOOL",
  "skills": [
  "JAVASCRIPT",
  "JAVA",
  "PYTHON",
  "LISP"
]
  }

如果我們還想要精確控制如何序列化小明,可以給xiaoming定義一個toJSON()的方法,直接返回JSON應(yīng)該序列化的數(shù)據(jù):

反序列化

拿到一個JSON格式的字符串,我們直接用JSON.parse() 把它變成一個JavaScript 對象:

JSON.parse('[1,2,3,true]'); //[1,2,3,true]
JSON.parse('{"name":"瓜瓜","age":14}'); // Object{name:'瓜瓜',age:14}
JSON.parse('true'); // true
JSON.parse('123.45'):// 123.45

JSON.parse()還可以接收一個函數(shù),用來轉(zhuǎn)換解析出的屬性:
JSON.parse('{"name":"guagua","age":14}',function(key,value){ 
//把number * 2
if(key ==='name'){ 
return value + '同學(xué)'
}
return value;
}) ; // Object{name: '瓜瓜同學(xué)',age: 14}

以上這篇淺析JavaScript 箭頭函數(shù) generator Date JSON就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript中的3種繼承實現(xiàn)方法

    javascript中的3種繼承實現(xiàn)方法

    這篇文章主要介紹了javascript中的3種繼承實現(xiàn)方法,包括使用Object.create實現(xiàn)類式繼承、使用utilities工具包自帶的util.inherites、使用extends關(guān)鍵字,非常的實用,希望對大家了解javascript繼承能夠有所幫助
    2016-01-01
  • JavaScript—window對象使用示例

    JavaScript—window對象使用示例

    window對象是JavaScript瀏覽器對象模型中的頂層對象,其包含多個常用方法和屬性,下面為大家介紹下window對象的使用
    2013-12-12
  • javascript運算符語法全面概述

    javascript運算符語法全面概述

    下面小編就為大家?guī)硪黄猨avascript運算符語法全面概述。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • TypeScrip中泛型的案例詳解

    TypeScrip中泛型的案例詳解

    這篇文章主要介紹了TypeScrip中泛型的案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • JavaScript中__proto__與prototype的關(guān)系深入理解

    JavaScript中__proto__與prototype的關(guān)系深入理解

    本文將討論下對象的內(nèi)部原型(__proto__)和構(gòu)造器的原型(prototype)的關(guān)系,需要了解更多的朋友可以參考下
    2012-12-12
  • JavaScript中原型和原型鏈詳解

    JavaScript中原型和原型鏈詳解

    這篇文章主要介紹了JavaScript中原型和原型鏈詳解,本文講解了私有變量和函數(shù)、靜態(tài)變量和函數(shù)、實例變量和函數(shù)、原型和原型鏈的基本概念,需要的朋友可以參考下
    2015-02-02
  • JavaScript子窗口ModalDialog中操作父窗口對像

    JavaScript子窗口ModalDialog中操作父窗口對像

    在使用js中會碰到這樣的需求:利用子窗口操作父窗口對像,本人很是遺憾,于是搜索整理下,拿出來和大家分享,需要的朋友可以參考下
    2012-12-12
  • 談?wù)凧avaScript中的函數(shù)與閉包

    談?wù)凧avaScript中的函數(shù)與閉包

    本篇文章,小編將與大家談?wù)凧avaScript中的函數(shù)與閉包,有需要的朋友可以參考一下
    2013-04-04
  • W3C Group的JavaScript1.8 新特性介紹

    W3C Group的JavaScript1.8 新特性介紹

    在了解了JavaScript1.7的相關(guān)更新后,我們再繼續(xù)關(guān)注JavaScript1.8的新特性。在W3C Group帶來的JavaScript系列特性文章中,JavaScript1.8的更新相對較少!
    2009-05-05
  • JS如何刪除對象中的某一屬性(delete)

    JS如何刪除對象中的某一屬性(delete)

    這篇文章主要介紹了JS如何刪除對象中的某一屬性(delete),在這里需要注意已聲明的對象不可刪除, 對象中的對象屬性可以刪除,本文結(jié)合示例代碼給大家的非常詳細,需要的朋友可以參考下
    2023-01-01

最新評論

修文县| 拜泉县| 泰顺县| 北票市| 嘉峪关市| 卢氏县| 剑河县| 九江市| 石阡县| 繁峙县| 镇江市| 邵东县| 合阳县| 临城县| 合肥市| 固镇县| 松阳县| 荥经县| 正宁县| 比如县| 大方县| 儋州市| 龙门县| 苍山县| 永康市| 天津市| 苗栗市| 汉阴县| 乐山市| 文登市| 河曲县| 临高县| 汪清县| 兰坪| 甘泉县| 衡南县| 清河县| 平武县| 黄浦区| 阿拉尔市| 大足县|