JavaScript 对象


JavaScript对象

在JavaScript中,一切都是对象。对象是一种复合数据类型,可以包含属性和方法。对象通过创建新的对象(实例化)或拷贝现有对象来创建。对象可以用来承载数据以及封装常用函数。JavaScript中的对象可以是预定义或自定义的。

创建对象

  1. 直接量法

我们可以使用花括号{}创建对象。例如:

var student = {
    name: "张三",
    age: 20,
    gender: "男",
    study: function(){
        console.log("我正在学习")
    }
};
  1. 构造函数

除了使用直接量法创建对象,我们还可以使用构造函数来创建对象。例如:

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();

对象的属性和方法

  1. 属性

在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]}`);
}
  1. Object.keys() 方法

Object.keys() 方法可以获取对象所有可枚举属性的名称,并返回一个数组。

let obj = {
  name: '小明',
  age: 20,
  isMale: true
};

Object.keys(obj).forEach(function(key) {
  console.log(`${key} - ${obj[key]}`);
});
  1. 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 代码。