原型模式
每个函数(
准确说不是类、对象)都有一个prototype属性,这个属性是一个指针,指向一个对象。
使用原型对象的
好处是可以让所有对象实例共享它包含的属性和方法。
1.原型对象
(1)当创建一个新函数,就会为该函数创建一个prototype属性,这个属性指向函数的原型对象。
(2)默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向
prototype属性所在函数
的指针。
(3)实例的内部包含一个指针,叫[[Prototype]]。不过这个指针对脚本则
完全不可见(某些浏览器支持一种__proto__来访问)。
2.代码读取属性顺序
例:
isPrototypeOf():确定对象之间是否存在prototype关系
hasOwnProperty():检测一个属性是存在于实例中,还是存在原型中。
Object.keys()、Object.getOwnPropertyNames():接收一个对象作为参数,返回
一个包含所有可枚举属性的字符串数组。
来看个很
蛋疼的类继承(某个HTML5游戏框架):
感觉代码看来比较乱,我画了个图: