ES5重要特性

版本認識
  • ECMA Script(ECMA組織制定)是規範,JavaScript是實現。
  • ES5(2009)、ES6(2015)、ES7(2016)
  • IE瀏覽器對ES5存在部分支持問題。

一.嚴格模式(‘use strict’):使得Javascript在更嚴格的語法條件下運行

  • 變量:聲明必須使用var
  • 對象:屬性不能重複
  • 函數:自定義函數this不能指向window對象、爲eval函數添加作用域

二.json:存儲和交換文本信息的語法

  • json.stringFy():javascript對象/數組轉json文本。
  • json.parse():json文本轉javascript對象/數組。

三.Object擴展

  • 1.Object.create(prototype, [descriptors]):以指定對象爲原型創建新的對象
  var obj = {firstName:"張",lastName:'三'};
  var newObj = null;
  // 一:ES5構建對象:Object.create
  newObj = Object.create(obj,{
    sex:{
      value:"男",
      writable:true,// 可修改
      configurable:true,// 可刪除
      enumerable:true // 可枚舉
    }
  });

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AEmtv36D-1583675311642)(C:\Users\ASUS\Desktop\md筆記\尚硅谷前端\5規範集成\ES_567\assets\1583551448985.png)]

  • 2.Object.defineProperties(object, descriptors):爲指定對象擴展多個屬性
var strongObj = {
    firstName:"張",
    lastName:'三',
    get fullName(){
      return this.firstName+this.lastName;
    },
    set fullName(name){
      var arr = name.split("");
      this.firstName = arr[0];
      this.lastName = arr[1];
    }
  };
  
  var obj = {firstName:"張",lastName:'三'};
  var strongObj1 = {firstName:"張",lastName:'三'};
  // 二:ES5增強對象:Object.defineProperties(添加存取器/計算屬性)
  Object.defineProperties(strongObj1,{
    fullName:{
      get:function(){
        return this.firstName+this.lastName;
      },
      set:function(name){
        var arr = name.split("");
        this.firstName = arr[0];
        this.lastName = arr[1];
      }
    }
  });

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-B6MWwWkf-1583675311645)(C:\Users\ASUS\Desktop\md筆記\尚硅谷前端\5規範集成\ES_567\assets\1583551569778.png)]

四.Array擴展

  • 索引:Array.prototype.indexOf/ lastIndexOf (value)
  • 遍歷:Array.prototype.forEach(function(item, index){})
  • 映射:Array.prototype.map(function(item, index){})
  • 過濾:Array.prototype.filter(function(item, index){})
  var arr = [6,2,4,6,1,6];
  console.log(arr.indexOf(6),arr.lastIndexOf(6));
  arr.forEach(function(item){console.log(item)});
  console.log(arr.map(function(item){return item+10}));
  console.log(arr.filter(function(item){return item>4}));

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jE9kUuVI-1583675311646)(C:\Users\ASUS\Desktop\md筆記\尚硅谷前端\5規範集成\ES_567\assets\1583573247405.png)]

五.Function擴展

  • Function.prototype.bind(obj):將函數內的this綁定爲obj, 並將函數返回
  • 區別bind、call和apply:從 是否立即執行、傳參方式來區分
function fn(param){
  console.log(this,param);
}
  var obj = {name:"張三"};
  fn("param");
  fn.call(obj,"call_param");
  fn.apply(obj,["apply_param"]);
  fn.bind(obj,"bind_param")();//不會立即執行,常用在回調函數。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章