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()
posted @ 2016-06-04 21:21  海绵小猪  阅读(2088)  评论(0编辑  收藏  举报