面试题答案
一键面试-
优化思路:
- 当使用
class
关键字定义类时,每次通过构造函数创建实例,实例方法会被重新创建。可以将这些方法定义在prototype
上,这样所有实例可以共享这些方法,减少内存开销。
- 当使用
-
优化后的代码:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.someMethod = function() {
// 这里定义实例方法,比如
console.log(`Name: ${this.name}, Age: ${this.age}`);
};
在ES6 class
语法糖下,其实也遵循同样原理,只是语法更简洁,如下:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
someMethod() {
console.log(`Name: ${this.name}, Age: ${this.age}`);
}
}
这种方式定义在类中的方法,实际上是被添加到类的 prototype
上,所有实例共享这些方法,从而提高性能并减少内存开销。