面试题答案
一键面试- length:
- 属性说明:该属性表示函数定义时接收的参数个数。例如
function add(a, b) {}
,add.length
为2。 - 对性能影响:在某些情况下,如果函数内部逻辑依赖于传入参数个数做复杂判断(如通过
arguments.length
动态处理不同参数个数情况),并且在循环中频繁调用该函数,这种动态判断相较于固定参数个数的逻辑可能增加性能开销。因为每次调用都需要判断参数个数。而如果提前根据length
属性了解函数参数需求,在调用时保证参数准确,可减少不必要的判断开销。
- 属性说明:该属性表示函数定义时接收的参数个数。例如
- name:
- 属性说明:返回函数的名称。例如
function greet() {}
,greet.name
为'greet'
。 - 对性能影响:该属性本身对函数性能在循环调用等场景下直接影响较小。不过在调试和性能分析工具中,
name
属性有助于准确识别函数,方便开发者定位性能瓶颈函数。如果函数没有正确的name
属性(如使用匿名函数场景),在排查性能问题时可能增加困难,间接影响性能优化效率。
- 属性说明:返回函数的名称。例如
- prototype:
- 属性说明:每个函数都有一个
prototype
属性,用于实现基于原型链的继承。通过它可以为函数的实例添加共享的属性和方法。例如构造函数function Person() {}
,Person.prototype.age = 0
,则new Person()
实例可以访问age
属性。 - 对性能影响:在循环中,如果频繁创建基于某个构造函数的实例,原型链上方法和属性的查找机制会有一定开销。但如果合理利用原型,将共享的方法和属性定义在原型上而不是构造函数内部(构造函数内部定义每次创建实例都会重新生成属性和方法),可以减少内存消耗,提升性能。比如如果在构造函数内部定义一个函数作为实例方法,每次创建实例时都要重新创建该函数,而定义在原型上则只创建一次,在循环创建大量实例时可优化性能。
- 属性说明:每个函数都有一个