一、JavaScript 面向对象基础
1.1 对象的创建
主题句: 理解JavaScript中对象的创建方式对于掌握面向对象编程至关重要。
支持细节:
- 使用字面量语法创建对象:
var obj = {name: '张三', age: 20}; - 使用构造函数创建对象:
function Person(name, age) { this.name = name; this.age = age; } var person = new Person('李四', 25); - 使用类和构造函数(ES6):
class Person { constructor(name, age) { this.name = name; this.age = age; } } var person = new Person('王五', 30);
1.2 属性和方法
主题句: 在JavaScript中,对象可以包含属性和方法。
支持细节:
- 属性:
this.name = '张三'; - 方法:
this.sayName = function() { console.log(this.name); }
二、继承与原型链
2.1 原型链
主题句: 原型链是JavaScript实现继承的主要方式。
支持细节:
- 每个对象都有一个原型(
prototype)属性,指向其构造函数的原型对象。 - 当访问一个对象的属性时,如果该对象没有这个属性,则会沿着原型链向上查找,直到找到为止。
2.2 继承
主题句: 继承是面向对象编程的核心概念之一。
支持细节:
- 使用原型链实现继承:
Child.prototype = new Parent(); - 使用构造函数实现继承:
function Child() { Parent.call(this); } - 使用组合继承:结合原型链和构造函数继承的优点。
三、ES6 类与继承
3.1 类的定义
主题句: ES6引入了class关键字,使得JavaScript的类更加简洁易读。
支持细节:
- 使用
class关键字定义类:class Person { constructor(name, age) { this.name = name; this.age = age; } } - 类的继承:
class Child extends Parent { }
3.2 类的继承实现
主题句: 了解ES6类继承的实现原理对于深入理解JavaScript的继承机制至关重要。
支持细节:
- 使用
__proto__属性实现继承:Child.prototype = new Parent(); - 使用
Object.create()方法实现继承:Child.prototype = Object.create(Parent.prototype);
四、考题实战
4.1 创建一个Person类,包含name和age属性,以及sayName方法。
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayName() {
console.log(this.name);
}
}
4.2 创建一个Student类,继承自Person类,并添加score属性和getScore方法。
class Student extends Person {
constructor(name, age, score) {
super(name, age);
this.score = score;
}
getScore() {
return this.score;
}
}
4.3 创建一个Teacher类,继承自Person类,并添加subject属性和teach方法。
class Teacher extends Person {
constructor(name, age, subject) {
super(name, age);
this.subject = subject;
}
teach() {
console.log(`${this.name} teaches ${this.subject}.`);
}
}
通过以上考题的练习,相信你已经对JavaScript面向对象编程有了更深入的理解。祝你考试顺利!
