构造函数
本课属于 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挑战
- 创建一个名为
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());这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
8整理 OOP 代码
将类组织到模块中自己练习: JavaScript 在线编译器