JavaScript教程-JavaScript对象
JavaScript对象是一个具有状态和行为(属性和方法)的实体。例如:car(汽车),pen(笔),bike(自行车),chair(椅子),glass(玻璃杯),keyboard(键盘),monitor(显示器)等。
JavaScript是一种基于对象的语言。在JavaScript中,一切都是对象。
JavaScript是基于模板而非基于类。在这里,我们不需要创建类来获取对象,我们可以直接创建对象。
在JavaScript中创建对象
有三种方法可以创建对象。
- 使用对象字面量
- 直接创建Object的实例(使用new关键字)
- 使用对象构造函数(使用new关键字)
1)使用对象字面量创建JavaScript对象
使用对象字面量创建对象的语法如下:
var object = { property1: value1, property2: value2, ..., propertyN: valueN };
如你所见,属性和值之间用冒号(:)分隔。
让我们看一个简单的JavaScript对象的例子:
var emp = { id: 102, name: "Shyam Kumar", salary: 40000 };
document.write(emp.id + " " + emp.name + " " + emp.salary);
上述例子的输出
102 Shyam Kumar 40000
2)通过创建Object的实例
直接创建对象的语法如下:
var objectname = new Object();
在这里,使用new关键字来创建对象。
让我们看一个直接创建对象的例子:
var emp = new Object();
emp.id = 101;
emp.name = "Ravi Malik";
emp.salary = 50000;
document.write(emp.id + " " + emp.name + " " + emp.salary);
上述例子的输出
101 Ravi Malik 50000
3)通过对象构造函数
在这里,你需要创建一个带有参数的函数。每个参数值可以通过使用this关键字在当前对象中进行赋值。
关键字this指的是当前对象。
通过对象构造函数创建对象的例子如下:
function Emp(id, name, salary) {
this.id = id;
this.name = name;
this.salary = salary;
}
var e = new Emp(103, "Vimal Jaiswal", 30000);
document.write(e.id + " " + e.name + " " + e.salary);
上述例子的输出
103 Vimal Jaiswal 30000
在JavaScript对象中定义方法
我们可以在JavaScript对象中定义方法。但是,在定义方法之前,我们需要在函数中添加与方法相同名称的属性。
在对象中定义方法的例子如下:
function Emp(id, name, salary) {
this.id = id;
this.name = name;
this.salary = salary;
this.changeSalary = changeSalary;
function changeSalary(otherSalary) {
this.salary = otherSalary;
}
}
var e = new Emp(103, "Sonoo Jaiswal", 30000);
document.write(e.id + " " + e.name + " " + e.salary);
e.changeSalary(45000);
document.write("<br>" + e.id + " " + e.name + " " + e.salary);
上述例子的输出
103 Sonoo Jaiswal 30000
103 Sonoo Jaiswal 45000
JavaScript对象的方法
JavaScript对象的各种方法如下:
序号 | 方法 | 描述 |
---|---|---|
1 | Object.assign() | 该方法用于将源对象的可枚举和自有属性复制到目标对象。 |
2 | Object.create() | 该方法用于使用指定的原型对象和属性创建一个新对象。 |
3 | Object.defineProperty() | 该方法用于描述属性的一些行为属性。 |
4 | Object.defineProperties() | 该方法用于创建或配置多个对象属性。 |
5 | Object.entries() | 该方法返回由键值对数组组成的数组。 |
6 | Object.freeze() | 该方法阻止对象的现有属性被删除。 |
7 | Object.getOwnPropertyDescriptor() | 该方法返回指定对象上一个自有属性对应的属性描述符。 |
8 | Object.getOwnPropertyDescriptors() | 该方法返回给定对象的所有自有属性描述符。 |
9 | Object.getOwnPropertyNames() | 该方法返回一个由指定对象的所有自有属性的名称(包括不可枚举属性)组成的数组。 |
10 | Object.getOwnPropertySymbols() | 该方法返回一个给定对象自有符号属性的数组。 |
11 | Object.getPrototypeOf() | 该方法返回指定对象的原型。 |
12 | Object.is() | 该方法确定两个值是否是同一个值。 |
13 | Object.isExtensible() | 该方法确定对象是否是可扩展的。 |
14 | Object.isFrozen() | 该方法确定对象是否被冻结。 |
15 | Object.isSealed() | 该方法确定对象是否被密封。 |
16 | Object.keys() | 该方法返回一个给定对象的所有自有属性的名称(不包括不可枚举属性)组成的数组。 |
17 | Object.preventExtensions() | 该方法用于阻止对象的扩展。 |
18 | Object.seal() | 该方法阻止新属性被添加到对象,并将所有现有属性标记为不可配置。 |
19 | Object.setPrototypeOf() | 该方法将一个指定对象的原型设置为另一个对象。 |
20 | Object.values() | 该方法返回一个由指定对象的所有自有属性的值组成的数组。 |