日期:2014-05-16  浏览次数:20351 次

Javascript Prototype 自我小结
javascript的继承是通过prototype这个属性实现的。

每个javascript的变量都是一个对象,每个对象都有它自己的 原型(prototype),而每个对象默认的原型是 Object,和大多数面向对象语言一样,对象的祖先是 Object。

我们使用js对象的时候,通过 对象名.属性 来调用。当对象本事不包含该属性的时候,会去查找对象的 原型(Prototype),如果原型里头包含了属性,那么就调用该属性的值。如果对象prototype中依然不包含该属性,那么这次调用返回的值是 undefined。

如果修改一个对象的prototype呢?参照《javascript语言精粹》中是这么修改的
if(typeof Object.beget !== 'function') {
   Object.beget = function(o) {
      var F = function(){};
      F.prototype = o;
      return new F();
   }
}

//这么调用 beget 修改 prototype

var newObj = Object.beget(oldObj);




我们可以通过使用 对象.hasOwnProperty('属性')方法来测试该属性是不是真正属于该对象。