面向对象、继承

JavaScript的创建对象方式主要有两种:

面向对象、继承_第1张图片



属性类型之高级功能(修改属性默认特性)

主要通过Object.defineProperty()方法创建

configurable:属性是否可以删除

enumerable:属性是否可以用for-in进行循环

writable:是否可以修改属性

value:要修改默认特性的值

面向对象、继承_第2张图片

构造函数

函数名首字母一般都用大写字母,其他函数都用小写

面向对象、继承_第3张图片

xxx.prototype.xxx:指向原型模式,共享实例的所有属性和方法

.isPrototypeOf:确定对象之间是否存在原型模式的指向

.hasOwnProperty:返回true说明该属性访问的是实例属性,false访问的是原型模式属性


确定原型和实例的关系

(说实话,这个比java继承复杂多了,迷迷糊糊有点懂,又有点不懂。。。)

方法一:

alert(instance instanceof Object)

alert(instance instanceof 被继承的函数)

alert(instance instanceof 继承的函数)

方法二:

alert(Object.prototype.isPrototypeOf(instance));

alert(被继承的函数.prototype.isPrototypeOf(instance));

alert(继承的函数.prototype.isPrototypeOf(instance));


子类型需要覆盖超类型的某个方法,一定要写在替换原型的语句之后。

注意:通过原型链实现继承时,不能使用对象字面量创建原型方法,因为这样做会重写原型链

你可能感兴趣的:(面向对象、继承)