javascript的继承是通过prototype这个属性实现的。
每个javascript的变量都是一个对象,每个对象都有它自己的 原型(prototype),而每个对象默认的原型是 Object,和大多数面向对象语言一样,对象的祖先是 Object。
我们使用js对象的时候,通过 对象名.属性 来调用。当对象本身不包含该属性的时候,会去查找对象的 原型(Prototype),如果原型里头包含了属性,那么就调用该属性的值。如果对象prototype中依然不包含该属性,那么这次调用返回的值是 undefined。
如果修改一个对象的prototype呢?参照《javascript语言精粹》
我们可以通过使用 对象.hasOwnProperty('属性')方法来测试该属性是不是真正属于该对象。
每个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('属性')方法来测试该属性是不是真正属于该对象。