首页 > 编程语言 >JavaScript继承

JavaScript继承

时间:2023-07-22 15:44:35浏览次数:34  
标签:Word log 继承 JavaScript console constructor new prototype

继承—通过原型

1.共同

function A() {}
function B() {}

const g = {
  a: 1,
  b: 2,
};

我想让从A、B构造出来的对象都具有g其中的属性,就可以通过继承

A.prototype = g
A.prototype.constructor = A
console.log(A.prototype)//{ a: 1, b: 2, constructor: [Function: Man] }

const aa = new A()
console.log(aa.a)//1
console.log(aa.b)//2

const bb = new B()
console.log(bb.a)//1
console.log(bb.b)//2

这样我就达到目标了。

2.不同

有公共属性就有各自对应的属性,我如果只给A添加属性呢

A.prototype.c = 1

console.log(A.prototype)//{ a: 1, b: 2, constructor: [Function: B], c: 1 }
console.log(B.prototype)//{ a: 1, b: 2, constructor: [Function: B], c: 1 }

可以发现,我想让从A创造的对象都具有c = 1这一属性,但是它竟然给B也加上了,为什么呢?

因为A.prototype和B.prototype指向的同一个地址,给A.prototype添加一个属性,B同样能找到它

//将A和B再向上提取出一个等级,A、B都指向它  
function Word(){
    this.a = 1
    this.b = 2
}

//new Word()出来的对象,有了初始值  
还记得new的执行过程吗:
1.new fn(),创建一个对象;
2.this指向新的对象;
3.执行构造函数的代码,修改值;
4.obj形成。

console.log(new Word());//Word { a: 1, b: 2 }
console.log(new Word().constructor);//[Function: Word]

*JS的继承是通过prototype来传递的,那么只要让A、B的prototype指向任意一个由Word生出来的对象就可以继承Word中的值*

function A(){}
A.prototype = new Word()
A.prototype.constructor = A

function B(){}
B.prototype = new Word()
B.prototype.constructor = B

A.prototype.c = 3

const aa = new A()
console.log(aa.__proto__);//Word { a: 1, b: 2, constructor: [Function: A], c: 3 }

const bb = new B()
console.log(bb.__proto__);//Word { a: 1, b: 2, constructor: [Function: B] }

标签:Word,log,继承,JavaScript,console,constructor,new,prototype
From: https://www.cnblogs.com/doud/p/17573471.html

相关文章

  • JavaScript多线程
    JavaScript多线程实现流程1.基本概念在开始讲解JavaScript多线程之前,我们需要先了解一些基本概念。单线程:JavaScript是一门单线程语言,即每次只能执行一项任务。这是因为JavaScript的设计初衷是用于前端交互和操作DOM,多线程会带来复杂性和安全性问题。多线程:多线程指的是同时......
  • JavaScript报告总结1300字
    JavaScript报告总结介绍JavaScript是一种轻量级的、解释性的编程语言,用于网页开发。它被广泛应用于前端开发,并且也可以运行在服务器端。本文将介绍JavaScript的一些基本概念和特性,并通过代码示例来说明。变量和数据类型在JavaScript中,使用var关键字来声明变量。变量可以存储不......
  • 继承构造方法和this、super
    1.继承中构造方法的访问特点是什么?●子类不能继承父类的构造方法,但是可以通过super调用●子类构造方法的第一行,有一个默认的super();●默认先访问父类中无参的构造方法,再执行自己。●如果想要方法文父类有参构造,必须手动书写。packagedemo3;/***ClassName:Emplo......
  • JavaScript学习笔记
    之所以学习JS是想更清楚的了解这门语言,记得上学那会就感觉j真难学,工作了几年了一直从事后端,但偶尔也会用前端开发,这时候就会手忙脚乱, 好多东西都是默默糊糊,还有就是,我想知道这门语言真的很难学吗?抱着好奇的心态开始了一个月的学习历程,下面整理一下一个月的学习笔记.跟着......
  • 继承
    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。  ......
  • Javascript数组sort方法的分析(转)
    特点:类似java的Comparatorjava:Arrays.sort(values,newComparator<Integer>(){publicintcompare(Integervalue1,Integervalue2){returnvalue2-value1;}});javascript:varvalues=[213,16,2058,54,10,1965,57,9];values.sort(fu......
  • HTML模板继承导入
      include导入 include可以导入多次,extend继承只能一次......
  • JavaScript | JavaScript介绍
    JavaScript起源JavaScript诞生于1995年,它的出现主要是用于处理网页中的前端验证。所的前端验证,就是指检查用户输入的内容是否符合一定的规则。比如:用户名的长度,密码的长度,邮箱的格式等。JavaScript简史JavaScript是由网景公司发明,起初命名为LiveScript,后来由于SUN......
  • JavaScript(一)
    简介:JavaScript不学不行啊,ajax,前端交互,都需要的。一:书写位置1.内部位置 2.外部位置3.行内一般在框架里支持二:注释1.单行注释//这里是注释  快捷键:ctrl+/2.多行注释/*这里是多行注释*/快捷键:alt+shift+a 三:结束符每行的结束符是“;”现在发展的可用可不......
  • 抓取网页图片上的文字javascript
    抓取网页图片上的文字流程以下是实现“抓取网页图片上的文字”所需要的步骤和代码示例:步骤做什么代码示例1安装必要的库和工具2下载网页图片3图片预处理4使用OCR技术抓取文字步骤1:安装必要的库和工具在进行文字抓取前,首先需要安装几个必要的库和......