zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    《Docker技术入门与实践》Docker入门4-使用Dockerfile创建镜像
    《Docker技术入门与实践》Docker入门3-网络基础配置
    《Docker技术入门与实践》Docker入门2-数据管理
    Git管理多个SSH密钥,Git多帐号配置
    《Docker技术入门与实践》Docker入门
    java获取汉字笔画数
    NSBundle、UIImageView、uibutton
    动画帧的使用
    结构体的转换
    IOS字符串的处理例子
  • 原文地址:https://www.cnblogs.com/feitan/p/5306865.html
Copyright © 2011-2022 走看看