JavaScript九大面试问题集锦,助你顺利通关( 四 )


即使是首次遇到原型这一概念 , 使用内置方法时也会遇到原型系统 。例如 , 用于操作数组的函数(如map , reduce , splice等)都是Array.prototype对象的方法 。实际上 , 数组的每个实例(使用方括号[]定义 , 或者 -不常见的 new Array())都继承自Array.prototype , 这就是为什么map , reduce和spliceare等方法都默认可用的原因 。
几乎所有内置对象都是如此 , 例如字符串和布尔运算:只有少数 , 如Infinity , NaN , null和undefined等没有类或方法 。
在原型链的末尾 , 能发现 Object.prototype , 几乎JavaScript中的每个对象都是Object的一个实例 。比如Array. prototype和String. prototype都继承了Object.prototype的类和方法 。
要想对使用prototype syntax的对象添加类和方法 , 只需将对象作为函数启动 , 并使用prototype关键字添加类和方法:
function Person() {};Person.prototype.forename = "John";Person.prototype.surname = "Smith";是否应该覆盖或扩展原型运算?
可以使用与创建扩展prototypes同样的方式改变内置运算 , 但是大多数开发人员(以及大多数公司)不会建议这样做 。
如果希望多个对象进行同样的运算 , 可以创建一个自定义对象(或定义你自己的“类”或“子类”) , 这些对象继承内置原型而不改变原型本身 。如果打算与其他开发人员合作 , 他们对JavaScript的默认行为有一定的预期 , 编辑此默认行为很容易导致出错 。
总的来说 , 这些问题能够帮助你更好理解JavaScript , 包括其核心功能和其他鲜为人知的功能  , 并且望能助你为下次的面试做好准备 。




推荐阅读