- 在javascript中,所有的函数都有一个prototype属性,默认初始值为空对象。
- 我们可以在相关的原型对象中添加属性和方法,甚至可以用自定义的对象来完全替换掉原有的原型对象。
- 当我们通过某个构造器函数来新建对象时(使用new操作符),这些对象就会自动拥有一个指向各自prototype属性的神秘链接,并且可以直接访问各自原型对象的属性和方法。
- 对象自身属性的优先级要高于原型对象中的同名属性。
- 我们可以通过hasOwnPrototype()方法来区分对象自身属性和原型属性。
- 圆形链的存在:如果我们在一个对象foo中访问一个并不存在的属性bar,即当我们访问foo.bar时,javascript引擎就会搜索对象的原型的bar属性。如果依然没有找到bar属性,则会继续搜索其原型的属性,以此类推,知道最高级的父级对象object
- 我们可以通过对内建的构造器进行扩展,以使所有的对象都能引用我们添加的功能。如果将某个函数复制给Array.prototype.flipe,所有的数组对象都能立即增添一个flip()的方法。另外在添加相关属性和方法之前,应当做一些对已有方法属性的检测工作,这将会打打增加脚本对未来环境的适应能力。
网友评论