即使是首次遇到原型这一概念 , 使用内置方法时也会遇到原型系统 。例如 , 用于操作数组的函数(如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 , 包括其核心功能和其他鲜为人知的功能 , 并且望能助你为下次的面试做好准备 。
推荐阅读
- 自己总结 给初中级JAVA准备的面试题,致竞争激烈的秋招面试
- JavaScript黑科技:实现一个AST解释器
- 你的博客用不着什么 JavaScript 框架
- 大学生|资深面试官坦言,毕业生有这些特点,不用看学历就会被拒之门外
- 基于canvas的JavaScript 二维码生成工具——QRCanvas
- 求职|聘多多上面试通过后,拒绝了offer没去上班,后面想去还能入职吗?
- 终于还是打开了这个可以学习JavaScript的教程
- 面试题-Mysql数据库优化之垂直分表
- 2020年常见Vue面试题
- 软件测试|3面支付宝!一个从业4年软件测试工程师面试结束后想说的