JavaScript 对象
JavaScript对象
在JavaScript中,一切都是对象。对象是一种复合数据类型,可以包含属性和方法。对象通过创建新的对象(实例化)或拷贝现有对象来创建。对象可以用来承载数据以及封装常用函数。JavaScript中的对象可以是预定义或自定义的。
创建对象
- 直接量法
我们可以使用花括号{}创建对象。例如:
var student = {
name: "张三",
age: 20,
gender: "男",
study: function(){
console.log("我正在学习")
}
};
- 构造函数
除了使用直接量法创建对象,我们还可以使用构造函数来创建对象。例如:
function Animal(name, age, gender){
this.name = name;
this.age = age;
this.gender = gender;
this.say = function(){
alert("我是" + this.name);
}
}
var cat = new Animal("小猫", 1, "female");
cat.say();
对象的属性和方法
- 属性
在JavaScript中,对象的属性可以是基本类型、对象、函数、或undefined。属性名是字符串,并且属性名this.na}使 冒号分隔
var student = {
20, true);
对象的 introductio属 包括数据属性和访问器属性。
数据属性
数" }, study: function(){ con、writable、enumerab")c }urable。
- value:属性的值。 印 “张三” console.log(student.introduction.hobby); // 打印 “打球”
2. 方法
在JavaScript中,对象的方法是指与对象相关联的函数。方法可以通过属性访问器来定义函数
var student = { name: “张三”, age: 20, study: function(){ console.log(“我正在学习”); } }; student.study();
## 面向对象编程
面向对象编程(OOP)是一个程序设计范式,基于对象的概念。OOP使代码组织更灵活、功能更易扩展、代码重用率更高。
在JavaScript中,我们可以使用面向对象编程的概念来设计我们的代码。例如,下面是一个使用面向对象编程的JavaScript代码:
// 定义一个类 function Person(name, age, gender){ this.name = name; this.age = age; this.gender = gender; } Person.prototype.sayHello = function(){ console.log(“我叫” + this.name + “,今年” + this.age + “岁”); }
// 创建对象 var tom = new Person(“Tom”, 18, “男”); var lucy = new Person(“Lucy”, 20, “女”);
// 调用方法 tom.sayHello(); // 我叫Tom,今年18岁 lucy.sayHello(); // 我叫Lucy,今年20岁
在上面的代码中,我们定义了一个Person类,该类有三个属性:name、age和gender。我们还定义了一个方法sayHello(),该方法用于打印对象的属性。我们可以使用new关键字来创建对象,创建的对象是Person类的实例。我们还可以调用sayHello()方法来打印对象的属性。
## 小结
JavaScript中的对象可用于承载数据以及封装常用函数。对象的属性可以是基本类型、对象、函数或undefined,属性名是字符串,并且属性名与值之间使用冒号分隔。方法指与对象相关联的函数。面向对象编程(OOP)是一个程序设计范式,基于对象的概念,可以使用JavaScript实现。:
```javascript
let obj = {
name: '小明',
age: 20,
isMale: true
};
for (let key in obj) {
console.log(`${key} - ${obj[key]}`);
}
- Object.keys() 方法
Object.keys() 方法可以获取对象所有可枚举属性的名称,并返回一个数组。
let obj = {
name: '小明',
age: 20,
isMale: true
};
Object.keys(obj).forEach(function(key) {
console.log(`${key} - ${obj[key]}`);
});
- Object.getOwnPropertyNames() 方法
Object.getOwnPropertyNames() 方法可以获取对象所有属性的名称,并返回一个数组。不同于 Object.keys(),它可以获取对象的所有属性,包括不可枚举的属性和 Symbol 类型的属性。
let obj = {};
Object.defineProperty(obj, 'name', {
value: '小明',
writable: false,
enumerable: false,
configurable: false
});
Object.getOwnPropertyNames(obj).forEach(function(key) {
console.log(`${key} - ${obj[key]}`);
});
总结
JavaScript 对象是一种非常重要的数据类型,它常用于存储和操作数据,也可以用于模拟真实世界中的实体。我们可以使用对象字面量、 new Object() 或构造函数来创建对象,使用属性和方法来存储和操作数据,使用不同的方式来遍历对象。熟悉对象的使用可以让我们写出更加高效和优雅的 JavaScript 代码。