从调用性能、程序可移植性方面看原型模式与对象字面量模式的不同

  var PERSON = {
       name: 'Jack',
       getName: function () {
             return this.name;
       }
  };

  function Person(name) {
        this.name = name;
  }
  Person.prototype.getName = function () {
        return this.name;
  }
  /***************************************************/
  var p_obj = new Person('Jim');
  /***************************************************/
  function test_obj() {
        var start = +new Date(),
             p = PERSON,
             i = 1;
       for (; i < 10000000; i++) {
            p.getName();
       }
       alert('Object: ' + ((+new Date()) - start));
  }
  /***************************************************/
  function test_prototype() {
        var start = +new Date(),
             po = p_obj,
             j = 1;
        for (; j < 10000000; j++) {
             po.getName();
        }
        alert('prototype: ' + ((+new Date()) - start));
  }
  /***************************************************/
  test_obj();
  test_prototype();

  通过循环调用2种模式下的访问情况(ie7环境):

  性能方面:

  大多情况下对象字面量模式要比原型快些儿,但也有原型比对象字面量快的时候;

  移植性方面:

  很明显,对象字面量模式的移植性更好,因为它可以做为子树便利挂到任何需要的对象上;

 

你可能感兴趣的:(从调用性能、程序可移植性方面看原型模式与对象字面量模式的不同)