zoukankan      html  css  js  c++  java
  • 原型链继承

    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 属性被替换成了新对象,添加了新方法的原始对象将被销毁。

    未完,待续......
  • 相关阅读:
    规则引擎.Net Core
    GDPR(Cookie处理)
    NSSM把.Net Core部署至 Windows 服务
    Consul实现服务治理1
    微服务
    Consul实现服务治理
    NET Core Web发布包
    NET API 分析器
    NET Core 2.1 Global Tools
    css3中-moz、-ms、-webkit,-o分别代表的意思,以及微信浏览器内核分析
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/14631131.html
Copyright © 2011-2022 走看看