持续创作,加速成长!这是我参与「掘金日新计划 · 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
class继承
class关键字,是在ES6引入的
class student{
constructor(name) {
this.name=name
}
hello(){
alert('hello')
}
}
var xiaoming=new student("xiaoming")
继承
class xiaoming extends student{
constructor(name,grade) {
super(name)
this.grade=grade
}
mygrade(){
alert("稀土掘金")
}
}
var xiaohong=new xiaoming("xiaohong",1)
本质:查看对象原型
原型链
原型链:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么假如我们让原型对象等于另一个类型的实例,结果会怎样?显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。
proto
当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object)都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(proto),层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。