>웹 프론트엔드 >JS 튜토리얼 >JavaScript 화살표 함수 생성기 날짜 JSON의 자세한 해석

JavaScript 화살표 함수 생성기 날짜 JSON의 자세한 해석

亚连
亚连원래의
2018-05-21 11:58:471794검색

이제 JavaScript 화살표 함수 생성기 Date JSON에 대한 간략한 분석을 가져오겠습니다. 이제 그것을 여러분과 공유하고 모든 사람에게 참고 자료로 제공하겠습니다.

ES6 표준에는 Arrow Function이라는 새로운 기능이 추가되었습니다.

    x => x *x
    上面的箭头相当于:
      function (x){ 
          return x*x;
      }

화살표 함수는 익명 함수와 동일하며 함수 정의를 단순화합니다. 위와 같은 것에는 표현식이 하나만 포함되어 있으며

심지어 { ... } 및 return도 생략됩니다. 여러 문을 포함할 수 있는 또 다른 방법이 있습니다. 이 경우 { ... } 및 return을 생략할 수 없습니다.

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

매개변수가 하나가 아닌 경우 대괄호()를 사용하여 묶어야 합니다.

    // 两个参数
      (x,y) => x*x + y *y
    // 无参数;
      () =>3.14
    // 可变参数
      (x,y,...rest) =>{ 
        var i, sum = x +y;
        for(i=0;i<rest.length;i++){ 
          sum += rest[i];
        }
      return sum;
    }

this

이제 화살표 함수는 this의 포인팅을 완전히 복구합니다. 이는 항상 외부 호출자 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

화살표 함수를 사용하는 경우 이전 해킹 방법

var that = this;

는 더 이상 필요하지 않습니다.

범위 지정 여부에 따라 화살표 함수에 바인딩되어 있으므로 call() 또는 적용()으로 화살표 함수를 호출할 때

바인딩할 수 없습니다. 즉, 전달된 첫 번째 매개 변수는 다음과 같습니다. 소홀히 하다.

    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 표준에서 도입된 새로운 데이터 유형입니다. 생성기는 함수처럼 보이지만 여러 번 반환할 수 있습니다.

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

제너레이터와 함수의 차이점은 제너레이터가 함수*(추가 * 기호 참고)로 정의되며 return 문 외에도 Yield를 사용하여 여러 번 반환할 수도 있다는 것입니다.

함수는 한 번만 반환할 수 있으므로 Tourmaline은 배열을 반환하지만 생성기로 교체하면 한 번에 하나의 숫자를 여러 번 반환할 수 있습니다.

    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; 
      }

직접 호출해 보세요:

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

제너레이터를 직접 호출하는 것은 함수를 호출하는 것과 다릅니다. fib(5)는 제너레이터 객체를 생성할 뿐 아직 실행하지는 않습니다.

생성기 개체를 호출하는 방법에는 두 가지가 있습니다. 하나는 생성기 개체의 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 개체를 사용하여 날짜와 시간을 나타냅니다. .

현재 시스템 시간을 얻으려면 다음을 사용하세요.

    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形式表示的时间戳
    如果要创建一个执行日期和时间的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의 약어로, 데이터 교환 형식입니다.

JSON에는 몇 가지 데이터 유형만 있습니다.

1,number: JavaScript의 숫자와 정확히 동일합니다.

2,boolean: JavaScript의 true 또는 false입니다. String ;

4,null:은 JavaScript의 null입니다.

5,array:는 JavaScript의 배열 표현입니다. - [];

6,object:는 JavaScript의 {...} 표현입니다.

SON도 문자 집합이 UTF-8이어야 한다고 규정하고 있으므로 여러 언어를 표현해도 문제가 없습니다. 통합 구문 분석의 경우 JSON 문자열은 큰따옴표 ""를 사용해야 하며 개체 키도 큰따옴표 ""를 사용해야 합니다.

Serialization

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

middle-school":"\"W3C\" Middle School","skills":  ["JavaScript","Java","Python","Lisp"]}&#39;
결과:

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

두 번째 매개변수는 객체의 키 값을 필터링하는 방법을 제어하는 ​​데 사용됩니다. 지정된 속성만 출력하려는 ​​경우 Array:

JSON을 전달할 수 있습니다. stringify(xiaoming, ['name', 'skills'], ' ');

결과:

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

또한 객체의 각 키-값 쌍이 함수에 의해 먼저 처리되도록 함수를 전달할 수도 있습니다. :

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

위 코드는 모두 결합합니다. 속성 값은 모두 대문자입니다:

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

또한 Xiaoming의 직렬화 방법을 정확하게 제어하려면 Xiaoming의 toJSON() 메서드를 정의하여 데이터를 직접 반환할 수 있습니다. JSON이 직렬화해야 하는 항목:

Deserialization

JSON 형식의 문자열을 가져오고 JSON.parse()를 직접 사용하여 이를 JavaScript 객체로 변환합니다.

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

JSON.parse()还可以接收一个函数,用来转换解析出的属性:
JSON.parse(&#39;{"name":"guagua","age":14}&#39;,function(key,value){ 
//把number * 2
if(key ===&#39;name&#39;){ 
return value + &#39;同学&#39;
}
return value;
}) ; // Object{name: &#39;瓜瓜同学&#39;,age: 14}

위는 제가 모두를 위해 컴파일한 내용입니다. 앞으로 모든 사람에게 도움이 될 것입니다.

관련 기사:

JavaScript의 블록 수준 범위, 개인 변수 및 모듈 모드에 대한 심층적인 이해(그림 및 텍스트 자습서)

JavaScript 출력 표시 내용(기본 자습서)

Javascript 일반 함수 함수의 차이점(코드와 결합하여 자세히 설명)

위 내용은 JavaScript 화살표 함수 생성기 날짜 JSON의 자세한 해석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.