JavaScrip面向对象-继承与原型链
JavaScript中的类与对象
继承
原型链
当取值触发get操作,当前对象无,去原型对象查找,如果原型对象没找到,就去原型对象的原型对象查找,一直找下去,所有的原型会形成链条叫原型链
Object的原型
object原型对象其实不是null的只是里面的内容是非枚举的
创建Object对象的内存图
原型链关系的内存图
Object是所有类的父类
继承创建对象的内存图
借用构造函数继承
组合借用继承的问题
原型式继承函数
setPrototypeof设置对象原型,两个参数,第一个为接收要设置的原型对象的对象,第二个为需要的原型对象
这种相当于,将创建得变量stu指向obj原型对象,然后stu再添加相应的属性和方法最后返回stu,这样,就可以获得obj的内容了
寄生组合式继承
类型之所以是person,是因为student对象--prop--指向了新建对象的--prop,新建的这个里面没有constructor,所以只能去他的原型中去找,而他的事person,所以最终就是person
所以需要增加一下内容进行更改
可以将继承方式进行封装成函数,这样多个对象需要继承某个对象内容就方便很多
对象的方法补充
判断属性是否自己的某个属性,也就是如果属性是原型的就会false
使用属性存在就会返回true
Instanceof不能给非构造器判断
原型继承关系
js中函数也是对象,function foo()跟var foo=new function()是一样的,作为函数时,有个显示原型,foo.prototype={constructor:Foo},作为对象,有隐式原型Foo.--proto--,new的时候创建出来的,Foo.--proto--=Function.prototype
5.function Fuction()是个函数所以有原型对象,Function.prototype,Function Foo()是function Function ()创建出来的,所以foo()的--proto--指向Function的原型对象。而foo()也是函数所以也有对象原型prototype,指向function Object()也是由function Function ()创建出来的,所以function Object()的--proto--也指向Function的prototype,而Object与会有原型对象,所以他的prototype指向原型对象,而每个原型对象都会指回自己
原文地址:https://blog.csdn.net/qq_56798493/article/details/144327260
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!