返回

原型对象-企业招聘常用题解析

前端

在JavaScript中,当通过new调用函数创建实例后,该实例内部包含一个指针 [[Prototype]] 指向构造函数的原型对象。该属性为内部属性,无法直接访问,但在Firfox、Chrome和Safari中有一个 proto 属性可以访问到构造函数的原型。

原型对象提供了继承机制,使得所有实例可以共享原型对象中的属性和方法。这种继承关系使代码更加简洁、易于维护,并有助于减少内存消耗。

面试题目解析:

  1. 什么是原型对象?

原型对象是构造函数的原型,它包含了构造函数的所有属性和方法,并作为所有实例的基准。原型对象提供了继承机制,使得所有实例可以共享原型对象中的属性和方法。

  1. 如何访问原型对象?

在Firfox、Chrome和Safari中,可以使用__proto__属性访问原型对象。例如:

function Person(name) {
  this.name = name;
}

const person = new Person('John Doe');

console.log(person.__proto__);
  1. 原型对象有什么用?

原型对象提供了继承机制,使得所有实例可以共享原型对象中的属性和方法。这种继承关系使代码更加简洁、易于维护,并有助于减少内存消耗。

  1. 如何修改原型对象?

可以使用__proto__属性修改原型对象。例如:

function Person(name) {
  this.name = name;
}

Person.prototype.greet = function() {
  console.log(`Hello, my name is ${this.name}.`);
};

const person = new Person('John Doe');

person.__proto__.greet(); // Hello, my name is John Doe.
  1. 原型对象和实例对象有什么区别?

原型对象是构造函数的原型,它包含了构造函数的所有属性和方法,并作为所有实例的基准。原型对象提供了继承机制,使得所有实例可以共享原型对象中的属性和方法。

实例对象是通过new调用构造函数创建的,它具有自己的属性和方法,并继承原型对象中的属性和方法。

拓展阅读: