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")();//不会立即执行,常用在回调函数。

在这里插入图片描述

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