面试题答案
一键面试- 确保方法的可继承性:
- 在JavaScript中,可以通过将新方法添加到类的原型对象上来确保方法的可继承性。因为原型对象上的属性和方法会被类的实例以及子类所共享。
- 确保兼容性:
- 针对不同运行环境:现代JavaScript(ES6+)的类语法在浏览器和Node.js环境中都得到了广泛支持。但为了确保兼容性,可以使用特性检测来判断某些功能是否可用。例如,如果要使用一些ES6的新特性,可以先检查
Symbol
是否存在(typeof Symbol === 'function'
)等。 - 针对不同版本:对于一些旧版本的JavaScript运行环境,可以使用Babel等工具将ES6+代码转译为ES5代码,以提高兼容性。
- 针对不同运行环境:现代JavaScript(ES6+)的类语法在浏览器和Node.js环境中都得到了广泛支持。但为了确保兼容性,可以使用特性检测来判断某些功能是否可用。例如,如果要使用一些ES6的新特性,可以先检查
代码示例:
// 假设已有类
function MyBaseClass() {
// 类的初始化逻辑
}
// 添加新方法到原型对象
MyBaseClass.prototype.newMethod = function() {
return 'This is a new method';
};
// 定义子类
function MySubClass() {
MyBaseClass.call(this);
// 子类的初始化逻辑
}
MySubClass.prototype = Object.create(MyBaseClass.prototype);
MySubClass.prototype.constructor = MySubClass;
// 测试
const baseInstance = new MyBaseClass();
console.log(baseInstance.newMethod());
const subInstance = new MySubClass();
console.log(subInstance.newMethod());
在ES6类语法下:
class MyBaseClass {
constructor() {
// 类的初始化逻辑
}
}
MyBaseClass.prototype.newMethod = function() {
return 'This is a new method';
};
class MySubClass extends MyBaseClass {
constructor() {
super();
// 子类的初始化逻辑
}
}
// 测试
const baseInstance = new MyBaseClass();
console.log(baseInstance.newMethod());
const subInstance = new MySubClass();
console.log(subInstance.newMethod());