认识JavaScript中的对象及原型,理解数据结构的奥秘
2023-10-14 02:59:03
JavaScript中的对象
在JavaScript中,对象是一个复合数据类型,它由属性和方法组成。属性用于存储数据,而方法定义了可以对这些数据执行的操作。对象使用花括号({})来创建,每个属性和方法都以冒号分隔。例如,以下代码创建了一个具有两个属性(name和age)和一个方法(greet)的对象:
const person = {
name: "John Doe",
age: 30,
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
要访问对象属性,可以使用点(.)运算符,后面跟着属性的名称。例如,以下代码将输出"John Doe":
console.log(person.name); // "John Doe"
要调用对象方法,可以使用点(.)运算符,后面跟着方法的名称和括号。括号中可以传递参数,就像调用函数一样。例如,以下代码将输出"Hello, my name is John Doe":
person.greet(); // "Hello, my name is John Doe"
原型
每个JavaScript对象都有一个原型,原型是一个对象,它包含所有从该对象继承的属性和方法。原型是通过在创建对象时使用Object.create()
方法来创建的。例如,以下代码创建了一个名为student
的新对象,该对象从person
对象继承:
const student = Object.create(person);
现在,student
对象将具有person
对象的属性和方法。例如,以下代码将输出"John Doe":
console.log(student.name); // "John Doe"
也可以为原型添加新的属性和方法。例如,以下代码向student
原型添加了一个名为major
的属性:
student.prototype.major = "Computer Science";
现在,所有从student
对象创建的对象都将具有major
属性。例如,以下代码创建了一个新的student
对象,该对象具有major
属性:
const newStudent = Object.create(student);
console.log(newStudent.major); // "Computer Science"
继承
继承是一种允许对象从另一个对象继承属性和方法的机制。在JavaScript中,继承是通过原型链来实现的。原型链是一个对象列表,每个对象都指向其原型。如果一个对象不具有某个属性或方法,则它将沿原型链向上搜索,直到找到具有该属性或方法的对象。
例如,以下代码创建一个具有name
属性和greet
方法的对象:
const person = {
name: "John Doe",
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
现在,我们可以创建一个从person
对象继承的新对象。例如,以下代码创建一个名为student
的新对象,该对象从person
对象继承:
const student = Object.create(person);
现在,student
对象将具有person
对象的属性和方法。例如,以下代码将输出"John Doe":
console.log(student.name); // "John Doe"
student
对象也可以访问person
原型上的属性和方法。例如,以下代码将输出"Hello, my name is John Doe":
student.greet(); // "Hello, my name is John Doe"
封装
封装是一种将数据和行为组合在一起,并将其与其他部分隔离开来的机制。在JavaScript中,封装是通过使用对象来实现的。对象可以将数据存储在私有属性中,并通过公共方法来访问这些数据。例如,以下代码创建了一个具有私有name
属性和公共getName
方法的对象:
const person = {
_name: "John Doe",
getName: function() {
return this._name;
}
};
现在,我们可以创建一个新的person
对象,并使用getName
方法来访问其_name
属性,而无需直接访问该属性。例如,以下代码将输出"John Doe":
const newPerson = new person();
console.log(newPerson.getName()); // "John Doe"
实例
以下是一些使用JavaScript对象和原型的示例:
- 创建一个表示购物车的对象,该对象具有以下属性和方法:
items
: 一个包含购物车中物品的数组。addItem(item)
: 将一个物品添加到购物车。removeItem(item)
: 从购物车中移除一个物品。getTotalCost()
: 计算购物车中所有物品的总成本。
- 创建一个表示银行账户的对象,该对象具有以下属性和方法:
balance
: 账户的当前余额。deposit(amount)
: 向账户中存入一笔钱。withdraw(amount)
: 从账户中提取一笔钱。getStatement()
: 获取账户的交易记录。
- 创建一个表示学生的