Menu
CoddyTech

构造函数

本课属于 Coddy JavaScript 学习旅程的“面向对象编程”单元。第 4 课,共 56 课。

构造函数是 JavaScript 中的特殊函数,可让你创建具有相同结构和行为的多个对象。

为 Person 定义一个构造函数:

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.greet = function() {
    return "Hello, my name is " + this.name;
  };
}

使用构造函数创建一个新的 Person 对象:

const john = new Person("John", 30);
const tyler = new Person("Tyler", 35);

使用 new 关键字调用构造函数。new 会创建一个空对象,让函数运行并将 this 指向该对象,然后返回这个对象,因此 this.name = name 会将名字存储在 john 上。按照惯例,构造函数的名称以大写字母开头(Person、Car),表示它们应该使用 new 调用。

如果不使用 new,Person("John", 30) 就是一次普通的函数调用:不会创建对象,this 是全局对象(或在严格模式下为 undefined),并且调用会返回 undefined。

执行上述代码后,john 是一个具有以下属性的对象:

// john 对象包含:
{
  name: "John",
  age: 30,
  greet: function() { return "Hello, my name is John"; }
}

访问属性并调用方法:

console.log(john.name); // 输出:John
console.log(john.greet()); // 输出:Hello, my name is John
challenge icon

挑战

  1. 创建一个名为 Book 的构造函数,它接受三个参数:
  • title(字符串)
  • author(字符串)
  • pages(数字)

该函数应将这些参数设置为创建的对象的属性。 

    2. 添加一个名为 getSummary 的方法,返回一个包含书籍信息的字符串:this.title + " was written by " + this.author + " and has " + this.pages + " pages";

亲手试试

// TODO:创建一个名为 Book 的构造函数,接收三个参数(title、author、pages)。


// TODO:将这些参数设置为所创建对象的属性。


// TODO:添加一个名为 getSummary 的方法,返回包含书籍信息的字符串。
// 例如:Harry Potter was written by Rowling and has 500 pages


// 不要修改下面的代码
const inputTitle = inp[0];          // 第一行:书名
const inputAuthor = inp[1];         // 第二行:作者  
const inputPages = parseInt(inp[2]);// 第三行:页数

const book = new Book(inputTitle, inputAuthor, inputPages);
console.log(book.getSummary());
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: JavaScript 在线编译器