JS基础-面向对象

1,550 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天点击查看活动详情

面向对象编程

什么是面向对象

JavaScript、Java、c#.... 面向对象:JavaScript有些区别! 类:模板 原型对象 对象:具体的实例 在JavaScript这个需要大家换一下思维方式! 原型:

var user={
		name:"稀土",
		age:3,
		run:function(){
			console.log(this.name+"run....")
		}
	}
	var lihua={
		name:"lihua"
	}
	lihua.__proto__=user

李华的原型是user

QQ截图20220529185822.png

class继承

class关键字,是在ES6引入的

	class student{
		constructor(name) {
			this.name=name
		}
		hello(){
			alert('hello')
		}
	}
	var xiaoming=new student("xiaoming")

QQ截图20220529191738.png

继承

	class xiaoming extends student{
		constructor(name,grade) {
			super(name)
			this.grade=grade
		    
		}
		mygrade(){
			alert("稀土掘金")
		}
	}
var xiaohong=new xiaoming("xiaohong",1)	

QQ截图20220529215707.png 本质:查看对象原型

原型链

原型链:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么假如我们让原型对象等于另一个类型的实例,结果会怎样?显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。

proto

当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object)都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(proto),层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。

QQ截图20220529220252.png