上一节中,我们加深了对JS中函数的理解。在本章中将讲解JS编程中的核心概念——对象,它主要用于组织和封装相关的数据和功能。对象是由属性和方法组成的,其中,属性是指对象的状态;方法属于对象的行为,定义可执行的操作。
一、对象的基本概念
· 属性:对象的属性用于存储数据。例如,一个人的姓名、年龄、性别等。
· 方法:对象的方法用于定义可以执行的操作。例如,一个人的“说话”或“走路”动作。
二、创建对象
在JavaScript中,有多种创建对象的方法:
1、对象字面量:使用花括号 { } 创建对象,是最常用和简便的方法。
const person = {
name: 'John',
age: 30,
greet: function() {
console.log('Hello, my name is ' + this.name);
}
};
其中,name与age是对象person的属性,greet是对象person中的方法,执行打招呼这个动作。
2、使用new Object( )构造函数创建对象。
const person = new Object();
person.name = 'John';
person.age = 30;
person.greet = function() {
console.log('Hello, my name is ' + this.name);
};
首先通过 new Object( )这一构造函数创建一个空对象person,随后给对象person添加属性name和age;添加方法greet。
3、构造函数:用于创建具有相似属性和方法的多个对象实例。
function Person(name, age) {
this.name = name;
this.age = age;
this.greet = function() {
console.log('Hello, my name is ' + this.name);
};
}
const person1 = new Person('John', 30);
const person2 = new Person('Jane', 25);
上述通过向构造函数Person中传递参数,创建了两个不同的对象(可以理解成两个不同的人,姓名和年龄都不一样,执行打招呼的动作时,自我介绍就不一样)。
4、Object.create( ):使用现有对象作为原型,创建一个全新的对象。
const person = {
greet: function() {
console.log('Hello, my name is ' + this.name);
}
};
const person1 = Object.create(person);
person1.name = 'John';
person1.greet(); // 输出: Hello, my name is John
在原对象person中是没有name这一属性的,也就是说 this.name = undefined。然而,使用Object.create方法,以原来的对象作为原型,创建了一个新对象person1, 再为他添加一个name属性,此时的this.name就是你添加的属性值。
5、ES6 类:提供更接近传统面向对象编程的语法。
class Person {
//构造函数
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log('Hello, my name is ' + this.name);
}
}
const person = new Person('John', 30); //实例化
person.greet(); // 输出: Hello, my name is John
在ES6语法中JS引入了class关键字和类的概念,是一种比较传统的写法。其结构与c++、java类似。关于类的概念,后续章节中会详细阐明。
三、访问对象中的属性和方法
1、点属性访问
const person = {
name: 'John',
age: 30,
greet: function() {
console.log('Hello, my name is ' + this.name);
}
};
console.log(person.name); // 输出: John
person.greet(); // 输出: Hello, my name is John
通过 对象.属性名称 的方式访问对象中的属性,如上述代码中的person.name,就是获取person对象中name属性的值。
2、方括号访问属性
const person = {
name: 'John',
age: 30,
greet: function() {
console.log('Hello, my name is ' + this.name);
}
};
const propName = 'name';
console.log(person[propName]); // 输出: John
3、通过对象的结构访问
const person = {
name: 'John',
age: 30
};
const { name, age } = person;
console.log(name); // 输出: John
console.log(age); // 输出: 30
4、keys与entries
const person = {
name: 'John',
age: 30
};
const keys = Object.keys(person); // 结果是: ['name', 'age']
const entries = Object.entries(person); // 结果是: [['name', 'John'], ['age', 30]]
四、对象的应用实例
function MyObject() {
this.readWorkbook = function(path) {
const wb = Workbooks.Open(path);
const data = wb.Sheets(1).Range("A1").CurrentRegion.Value2;
wb.Close();
return data;
}
}
function main() {
const mo = new MyObject(); //实例化
let data = mo.readWorkbook(你的路径);
}
上述是定义一个构造函数,在内部定义一个实例方法来获取工作簿中的数据。随后在主方法中电工用MyObject中的实例方法readWorkbook。
五、总结
- 对象:是JavaScript中用于组织和封装数据和功能的基本单位。
- 属性:存储对象的状态。
- 方法:定义对象的行为。
- 创建对象:可以使用对象字面量、
new Object()
、构造函数、Object.create()
和 ES6 类。 - 访问属性和方法:使用点属性访问器、方括号属性访问器、对象结构、
Object.keys()
和Object.entries()
。
通过理解和应用对象的概念,可以更有效地组织和管理JavaScript宏编程中的代码和数据。