ES5 特性概覽

1、Object框架

新增的方法有:this

  • 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框架實現雙向綁定的原理:spa

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。prototype

 

2、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

3、Stringcode

  • String.prototype.charAt(index)  返回index處的字符
  • Strng.prototype.charCodeAt(index) 返回index處的字符的Unicode編碼
  • String.prototype.trim() 返回一個去掉開頭和結尾的字符串拷貝

4、其餘對象

  • Date().toJSON()
相關文章
相關標籤/搜索