首页 > 其他 > 详细

原型链继承

时间:2021-04-08 15:28:53      阅读:2      评论:0      收藏:0      [点我收藏+]

prototype 对象是个模板,要实例化的对象都以这个模板为基础。总而言之,prototype 对象的任何属性和方法都被传递给那个类的所有实例。原型链利用这种功能来实现继承机制

把 ClassB 的 prototype 属性设置成 ClassA 的实例。这很有意思,因为想要 ClassA 的所有属性和方法,但又不想逐个将它们 ClassB 的 prototype 属性。还有比把 ClassA 的实例赋予 prototype 属性更好的方法吗?

function ClassA() {}

  ClassA.prototype.color = "blue";
  ClassA.prototype.sayColor = function () {
     console.log(this.color);
  };

function ClassB() {}

ClassB.prototype = new ClassA();

ClassB.prototype.name = "";
ClassB.prototype.sayName = function () {
    console.log(this.name);
};

var objA = new ClassA();
var objB = new ClassB();

objA.color = "blue";
objB.color = "red";
objB.name = "John";


objA.sayColor();
objB.sayColor();
objB.sayName();

 

与对象冒充相似,子类的所有属性和方法都必须出现在 prototype 属性被赋值后,因为在它之前赋值的所有方法都会被删除。为什么?因为 prototype 属性被替换成了新对象,添加了新方法的原始对象将被销毁。

原型链继承

原文:https://www.cnblogs.com/zhishiyv/p/14631131.html

(0)
(0)
   
举报
评论 一句话评论(0
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号