面向对象编程
什么是面向对象
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
没有原型,并作为这个原型链中的最后一个环节。
网络异常,图片无法展示
|