• ES5 特性概览


    一、Object

    新增的方法有:

    • Object.create(prototype,descriptors) 以指定的原型创建对象,并且可以(可选)的设置对象的属性
    • Object.defineProperty(object, propertyname, descriptor)  对指定的对象的一个属性设置丰富的值控制
    • Object.defineProperties(object, descriptors)  对指定的对象的一组属性提供丰富的值控制
    • APIObject.getOwnPropertyDescriptor(object, propertyname)  返回属性的定义
    • Object.getOwnPropertyNames(object)  返回所有属性的名称,哪怕说是不能枚举的属性
    • Object.preventExtensions(object)  防止新的属性添加到对象
    • Object.isExtensible(object)  是否可添加属性到对象
    • Object.seal(object) 不能添加和删除属性
    • Object.isSealed(object)
    • Object.freeze(object)  防止现有属性和属性值的修改,并防止新特性的添加。
    • Object.isFrozen(object)  最后如果想要得到对象原型,可以用
    • Object.getPrototypeOf(object)

    还需要重视的是,get/set属性读取访问器。定义属性时使用get/set,可以在属性被读写时做一些处理:

    var person = {
       _age: 18,
       get age(){ return this._age; },
       set age(val){ 
           if(val<0 || val>100){
                 console.log('设置年龄无效!');
           } else { this._age = val; }
       }
    }
    
    person.age; //18
    person.age = 300; //设置年龄无效!
    person.age = 30;
    person.age; //30

    结合Object.defineProperty,下面是VUE这种MVVM框架实现双向绑定的原理:

    function Archiver() {
      var temperature = null;
      var archive = [];
    
      Object.defineProperty(this, 'temperature', {
        get: function() {
          console.log('get!');
          return temperature;
        },
        set: function(value) {
          temperature = value;
          archive.push({ val: temperature });
        }
      });
    
      this.getArchive = function() { return archive; };
    }
    
    var arc = new Archiver();
    arc.temperature; // 'get!'
    arc.temperature = 11;
    arc.temperature = 13;
    arc.getArchive(); // [{ val: 11 }, { val: 13 }]

    代码直接摘自MDN。

    二、Array

    • Array.isArray(object) 
    • Array.prototype.IndexOf
    • Array.prototype.lastIndexOf
    • Array.prototype.every
    • Array.prototype.some
    • Array.prototype.forEach(function(item,index){}) 
    • Array.prototype.map(function(item,index,Array){})
    • Array.prototype.filter(function(item,index){})
    • Array.prototype.reduce(function(previous,current,currentIndex,array))
    • Array.prototype.reduceRight

    三、String

    • String.prototype.charAt(index)  返回index处的字符
    • Strng.prototype.charCodeAt(index) 返回index处的字符的Unicode编码
    • String.prototype.trim() 返回一个去掉开头和结尾的字符串拷贝

    四、其他

    • Date().toJSON()
  • 相关阅读:
    centos 6.4 FTP安装和配置
    常用正则表达式集锦
    同一服务器部署多个tomcat时的端口号修改详情
    介绍linux下vi命令的使用
    CentOS下安装两个或多个Tomcat7
    tomcat解析之简单web服务器(图)
    吻你
    用C++语言开发Android程序 配置开发环境
    内地开源镜像网站
    Android SDK Android NDK Android Studio 官方下载地址
  • 原文地址:https://www.cnblogs.com/feitan/p/5306865.html
Copyright © 2020-2023  润新知