Lang:简体中文

js面向对象的面试题

日期:2025-09-08 / 来源:面试宝典

掌握核心知识,应对面试挑战

在前端开发的面试中,js 面向对象的知识是考察重点。下面我会分类梳理一些常见的面试题。

面向对象基础概念

面试官可能会先考察你对面向对象基础概念的理解。比如问:“什么是面向对象编程?”面向对象编程是一种编程范式,它将数据和操作数据的方法封装在一起,形成对象。对象之间通过消息传递来进行交互。举个例子,在一个电商系统中,商品就是一个对象,它有自己的属性,如名称、价格、库存等,还有一些方法,如添加到购物车、修改库存等。

另一个常问的问题是:“面向对象的三大特性是什么?”答案是封装、继承和多态。封装是将数据和方法隐藏在对象内部,只对外提供必要的接口;继承是指一个对象直接使用另一对象的属性和方法;多态是指不同对象对同一消息做出不同的响应。比如,不同的交通工具对象(汽车、自行车)都有“移动”这个方法,但实现方式不同,这就是多态的体现。

创建对象的方式

创建对象是 js 面向对象编程的基础操作。常见的面试问题是:“请列举几种创建对象的方式。”常见的方式有对象字面量、构造函数、原型模式、组合使用构造函数和原型模式等。

对象字面量是最简单的方式,例如:

let person = {

name: 'john',

age: 30

};

构造函数方式可以创建多个相似的对象,例如:

function person(name, age) {

this.name = name;

this.age = age;

}

let person1 = new person('john', 30);

原型与原型链

原型和原型链是 js 面向对象的核心概念。面试中可能会问:“什么是原型?”每个对象都有一个内部属性 [[prototype]],它指向该对象的原型对象。通过原型,对象可以继承原型对象的属性和方法。

“什么是原型链?”当访问一个对象的属性或方法时,javascript 首先会在该对象本身查找,如果找不到,就会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的末尾(object.prototype)。例如:

function animal() {

this.sound = 'animal sound';

}

function dog() {}

dog.prototype = new animal();

let dog = new dog();

console.log(dog.sound); // 输出 'animal sound'

继承的实现方式

继承是面向对象编程的重要特性。面试题可能是:“请说明几种实现继承的方式。”常见的方式有原型链继承、构造函数继承、组合继承、寄生组合继承等。

原型链继承是让子类的原型指向父类的实例,例如:

function parent() {

this.name = 'parent';

}

function child() {}

child.prototype = new parent();

let child = new child();

console.log(child.name); // 输出 'parent'

类和继承(es6)

es6 引入了类和继承的语法糖。面试中可能会问:“es6 中如何定义类和实现继承?”es6 中使用 class 关键字定义类,使用 extends 关键字实现继承。例如:

class parent {

constructor() {

this.name = 'parent';

}

}

class child extends parent {

constructor() {

super();

}

}

let child = new child();

console.log(child.name); // 输出 'parent'

以下为推荐内容

微信二维码