JavaScript的创建对象方式主要有两种:
属性类型之高级功能(修改属性默认特性)
主要通过Object.defineProperty()方法创建
configurable:属性是否可以删除
enumerable:属性是否可以用for-in进行循环
writable:是否可以修改属性
value:要修改默认特性的值
构造函数
函数名首字母一般都用大写字母,其他函数都用小写
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));
子类型需要覆盖超类型的某个方法,一定要写在替换原型的语句之后。
注意:通过原型链实现继承时,不能使用对象字面量创建原型方法,因为这样做会重写原型链