首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Javascript继承-无法访问方法

JavaScript继承是一种面向对象编程的概念,它允许一个对象(子类)继承另一个对象(父类)的属性和方法。在JavaScript中,继承可以通过原型链和构造函数来实现。

  1. 原型链继承:
    • 概念:原型链继承是通过将子类的原型对象指向父类的实例来实现继承。
    • 分类:属于原型式继承。
    • 优势:简单易用,可以继承父类的属性和方法。
    • 应用场景:适用于单层继承关系,不适用于多层继承关系。
    • 示例代码:function Parent() { this.name = "Parent"; }
代码语言:txt
复制
 Parent.prototype.sayHello = function() {
代码语言:txt
复制
   console.log("Hello, I am " + this.name);
代码语言:txt
复制
 }
代码语言:txt
复制
 function Child() {
代码语言:txt
复制
   this.name = "Child";
代码语言:txt
复制
 }
代码语言:txt
复制
 Child.prototype = new Parent();
代码语言:txt
复制
 var child = new Child();
代码语言:txt
复制
 child.sayHello(); // 输出:Hello, I am Child
代码语言:txt
复制
 ```
  1. 构造函数继承:
    • 概念:构造函数继承是通过在子类的构造函数中调用父类的构造函数来实现继承。
    • 分类:属于经典继承。
    • 优势:可以继承父类的属性,避免了引用类型属性共享的问题。
    • 应用场景:适用于单个子类继承单个父类的情况。
    • 示例代码:function Parent() { this.name = "Parent"; }
代码语言:txt
复制
 Parent.prototype.sayHello = function() {
代码语言:txt
复制
   console.log("Hello, I am " + this.name);
代码语言:txt
复制
 }
代码语言:txt
复制
 function Child() {
代码语言:txt
复制
   Parent.call(this); // 调用父类的构造函数
代码语言:txt
复制
   this.name = "Child";
代码语言:txt
复制
 }
代码语言:txt
复制
 var child = new Child();
代码语言:txt
复制
 child.sayHello(); // 报错:child.sayHello is not a function
代码语言:txt
复制
 ```
  1. 组合继承:
    • 概念:组合继承是将原型链继承和构造函数继承结合起来的一种继承方式。
    • 分类:属于经典继承。
    • 优势:既可以继承父类的属性,又可以继承父类的方法。
    • 应用场景:适用于单个子类继承单个父类的情况。
    • 示例代码:function Parent() { this.name = "Parent"; }
代码语言:txt
复制
 Parent.prototype.sayHello = function() {
代码语言:txt
复制
   console.log("Hello, I am " + this.name);
代码语言:txt
复制
 }
代码语言:txt
复制
 function Child() {
代码语言:txt
复制
   Parent.call(this); // 调用父类的构造函数
代码语言:txt
复制
   this.name = "Child";
代码语言:txt
复制
 }
代码语言:txt
复制
 Child.prototype = new Parent(); // 继承父类的方法
代码语言:txt
复制
 var child = new Child();
代码语言:txt
复制
 child.sayHello(); // 输出:Hello, I am Child
代码语言:txt
复制
 ```
  1. 原型式继承:
    • 概念:原型式继承是通过创建一个临时的构造函数,将父类的实例作为新对象的原型来实现继承。
    • 分类:属于原型式继承。
    • 优势:简单易用,可以继承父类的属性和方法。
    • 应用场景:适用于需要快速创建对象并继承父类的情况。
    • 示例代码:function createObject(obj) { function F() {} F.prototype = obj; return new F(); }
代码语言:txt
复制
 var parent = {
代码语言:txt
复制
   name: "Parent",
代码语言:txt
复制
   sayHello: function() {
代码语言:txt
复制
     console.log("Hello, I am " + this.name);
代码语言:txt
复制
   }
代码语言:txt
复制
 };
代码语言:txt
复制
 var child = createObject(parent);
代码语言:txt
复制
 child.name = "Child";
代码语言:txt
复制
 child.sayHello(); // 输出:Hello, I am Child
代码语言:txt
复制
 ```
  1. 寄生式继承:
    • 概念:寄生式继承是在原型式继承的基础上,增强对象,返回一个新对象。
    • 分类:属于原型式继承。
    • 优势:可以在继承父类的同时,对新对象进行增强。
    • 应用场景:适用于需要在继承父类的基础上进行扩展的情况。
    • 示例代码:function createObject(obj) { var clone = Object.create(obj); clone.sayHello = function() { console.log("Hello, I am " + this.name); }; return clone; }
代码语言:txt
复制
 var parent = {
代码语言:txt
复制
   name: "Parent"
代码语言:txt
复制
 };
代码语言:txt
复制
 var child = createObject(parent);
代码语言:txt
复制
 child.name = "Child";
代码语言:txt
复制
 child.sayHello(); // 输出:Hello, I am Child
代码语言:txt
复制
 ```
  1. 寄生组合式继承:
    • 概念:寄生组合式继承是在组合继承的基础上,通过优化父类的实例创建过程,避免了重复调用父类的构造函数。
    • 分类:属于经典继承。
    • 优势:既可以继承父类的属性,又可以继承父类的方法,避免了重复调用父类的构造函数。
    • 应用场景:适用于单个子类继承单个父类的情况。
    • 示例代码:function Parent() { this.name = "Parent"; }
代码语言:txt
复制
 Parent.prototype.sayHello = function() {
代码语言:txt
复制
   console.log("Hello, I am " + this.name);
代码语言:txt
复制
 }
代码语言:txt
复制
 function Child() {
代码语言:txt
复制
   Parent.call(this); // 调用父类的构造函数
代码语言:txt
复制
   this.name = "Child";
代码语言:txt
复制
 }
代码语言:txt
复制
 // 优化父类的实例创建过程
代码语言:txt
复制
 Child.prototype = Object.create(Parent.prototype);
代码语言:txt
复制
 Child.prototype.constructor = Child;
代码语言:txt
复制
 var child = new Child();
代码语言:txt
复制
 child.sayHello(); // 输出:Hello, I am Child
代码语言:txt
复制
 ```

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

53秒

G盘无法访问怎么办?G盘无法访问的恢复方法

54秒

磁盘无法访问的恢复方法磁盘打不开的恢复方法

12分7秒

02-javascript/25-尚硅谷-JavaScript-getElementsByName方法

4分19秒

02-javascript/26-尚硅谷-JavaScript-getElementsByTagName方法

1分6秒

无法访问文件或目录损坏且无法读取的恢复方法

1分31秒

不能访问分区里面的文件磁盘无法访问的正确恢复方法

1分27秒

无法访问此卷不包含可识别的文件系统恢复方法

20分0秒

24-尚硅谷-servlet-继承关系以及service方法

1分30秒

可移动磁盘无法访问需要格式化才能用的数据恢复方法

14分4秒

051 - Java入门极速版 - 基础语法 - 面向对象 - 继承、构造方法

1分10秒

目录无法访问查看属性0字节的解决方法-U盘数据恢复

50秒

G盘文件系统为空设备未就绪无法访问的数据恢复方法

领券