首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我们已经在JS中拥有了Object.prototype.use(对象),那么创建原型链有什么意义呢?

如果我们已经在JS中拥有了Object.prototype.use(对象),那么创建原型链有什么意义呢?
EN

Stack Overflow用户
提问于 2022-03-23 19:05:56
回答 1查看 60关注 0票数 0

我从Pluralsight课程中学习了Javascript中的原型。我对此有些困惑。

下面是一个例子。我有两个建设者--人和学生:

代码语言:javascript
运行
复制
function Person(firstName, lastName, age) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;

  this.getFullName = function() {
    console.log(this.firstName + this.lastName)
  }
}

function Student(firstName, lastName, age) {
  this._enrolledCourses = [];

  this.enroll = function (courseId) {
    this._enrolledCourses.push(courseId);
  };

  this.getCourses = function () {
    return this._enrolledCourses;
  };
}

然后创建一个学生实例:

代码语言:javascript
运行
复制
let michael = new Student("Michael", "Nguyen", 22);

现在,在本教程中,它说,为了让michaelPerson继承所有东西,有两个步骤:

  • 步骤1:创建原型链:

代码语言:javascript
运行
复制
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

Student中的

  • 步骤2:调用Person

代码语言:javascript
运行
复制
function Student(firstName, lastName, age) {
  Person.call(this, firstName, lastName, age); <---- this line

  this._enrolledCourses = [];

  this.enroll = function (courseId) {
    this._enrolledCourses.push(courseId);
  };

  this.getCourses = function () {
    f;
    return this._enrolledCourses;
  };
}

但是,如果我移除步骤1,并且只跟随步骤2,结果将保持不变。michael仍然能够从Person继承所有东西。问题是,第一步到底有什么意义?如果我删除步骤2,并且只执行步骤1,michael将无法从Person继承任何东西。

这是课程网址:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 19:09:09

这是因为您的构造函数将所有属性添加到this中,而不是使用原型。

通常,方法被添加到原型中,而不是每个实例。

代码语言:javascript
运行
复制
function Person(firstName, lastName, age) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;
}

Person.prototype.getFullName = function() {
  console.log(this.firstName + this.lastName)
}

如果不创建原型链,Student将不会继承以这种方式定义的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71592717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档