前端 JavaScript 进阶面试题, JavaScript 中对象创建的方式有哪些?
前端 JavaScript 进阶面试题, JavaScript 中对象创建的方式有哪些?
QA
Step 1
Q:: JavaScript 中对象创建的方式有哪些?
A:: JavaScript 中对象创建的方式有以下几种:1. 对象字面量:如 var obj = {}; 2. 构造函数:如 function Person() { this.name = 'John'; } var person1 = new Person(); 3. Object.create() 方法:如 var newObj = Object.create(protoObj); 4. ES6 的类:如 class Person { constructor(name) { this.name = name; } } var person2 = new Person('John'); 5. 工厂函数:如 function createPerson(name) { return { name }; } var person3 = createPerson('John');
Step 2
Q:: 什么是原型链?
A:: 原型链(prototype chain)是 JavaScript 中对象的一个特性。每个对象都有一个私有属性(称之为 [[Prototype]]
),指向它的原型对象。原型对象也有自己的原型,层层向上直到一个对象的原型为 null。这个结构被称为原型链,它用于实现继承和共享属性或方法。
Step 3
Q:: JavaScript 中如何实现继承?
A:: JavaScript 中实现继承的方式有几种:1. 原型链继承:通过将子类的原型设置为父类的一个实例。2. 构造函数继承:在子类构造函数中调用父类构造函数。3. 组合继承:结合原型链继承和构造函数继承。4. ES6
class 继承:使用 extends 关键字和 super 函数。
Step 4
Q:: 什么是闭包?
A:: 闭包是指有权访问另一个函数作用域中的变量的函数。闭包常用于创建私有变量、模拟块级作用域、在回调函数中保持变量的值等。
Step 5
Q:: JavaScript 中的 this 关键字是如何工作的?
A:: this 关键字的值在 JavaScript 中取决于函数的调用方式。1. 作为对象的方法调用时,this 指向该对象。2. 作为普通函数调用时,this 指向全局对象(严格模式下为 undefined)。3. 作为构造函数调用时,this 指向新创建的实例对象。4.
使用 call、apply 或 bind 调用时,this 被显式指定。