JavaScript中的Object

在 JavaScript 中,`Object`是一个内置的构造函数,用于创建对象。

`Object`构造函数会根据给定的参数创建对象,具体规则如下:
- 如果给定值是`null`或`undefined`,将会创建并返回一个空对象。
- 如果传进去的是一个基本类型的值,则会构造其对应的包装类型的对象。例如,传入数值会创建一个`Number`对象,传入字符串会创建一个`String`对象等。
- 如果传进去的是引用类型的值,仍然会返回这个值,并且复制后的变量保有和源对象相同的引用地址。

当以非构造函数形式被调用时,即不使用`new`关键字时,`Object`的行为等同于`new Object()`。

`Object`构造函数具有一些属性和方法,以下是部分常见的属性和方法:

**属性**:
- `length`:其值为 1。
- `prototype`:所有的对象都继承自`Object.prototype`的属性和方法。
- 该属性的三个特性均为`false`,即`writable: false`、`enumerable: false`、`configurable: false`。
- enumerable可枚举的

**方法**:
- `Object.assign()`:用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,并返回目标对象。如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。
- `Object.create()`:使用指定的原型对象和属性创建一个新对象。
- `Object.defineProperty()`:在对象上定义或修改一个自有属性,并返回这个对象。通过其属性值控制新定义的属性并且可以修改对象上原有的属性值。
- `Object.defineProperties()`:直接在一个对象上定义新的属性或修改多个现有属性,并返回该对象。
- `Object.getOwnPropertyDescriptor()`:获取指定对象指定的自有属性的属性描述符。
- `Object.getOwnPropertyNames()`:返回一个数组,包含对象所有自有的属性和方法(但不包括以`Symbol`值作为名称的属性)的字符串名。
- `Object.getOwnPropertySymbols()`:返回一个数组,包含给定对象所有自有的`Symbol`值的属性(包括不可枚举的`Symbol`值属性)。
- `Object.getPrototypeOf()`:用于获取指定对象的原型对象。
- `Object.setPrototypeOf()`:用于将指定对象的原型对象设置到一个新的对象或`null`。
- `Object.keys()`:返回一个数组,包含对象所有自有的可枚举的属性名。数组中属性名的排列顺序和使用`for...in`循环遍历该对象时返回的顺序一致,属性名不包括`Symbol`值的属性名。
- `Object.values()`:返回一个数组,包含了给定对象所有可枚举属性的值,但不包括`Symbol`值属性的值。
- `Object.entries()`:返回一个数组,数组的每一个元素是对象的自有的可枚举属性的键值对,但不包括`Symbol`值的属性。形如`[(key1, value1), (key2, value2),... (keyn, valuen)]`。
- `Object.preventExtensions()`:用于将一个对象设置为不可扩展,也就是不能再为其添加新的属性。
- `Object.isExtensible()`:用于判断一个对象是否是可扩展的。
- `Object.seal()`:用于密封一个对象,即将对象设置为不可扩展,同时将对象的所有自有属性都设置为不可配置(包括`Symbol`值的属性)。密封后不能给对象添加新的属性和方法,也不能删除现有的属性和方法、不能修改现有属性和方法的配置,但如果对象的属性和方法是可写的,那该属性和方法仍然可以修改。
- `Object.isSealed()`:用于判断一个对象是否是已密封的状态。密封状态是指一个对象是不可扩展的,且所有自有属性和方法都是不可配置的。
- `Object.freeze()`:用于冻结一个对象。冻结后的对象设置为不可扩展、其所有自有的属性和方法(包括`Symbol`值的属性和方法)配置为不可配置、不可写。
- `Object.isFrozen()`:用于判断一个对象是否已冻结。

以下是使用`Object`构造函数创建对象并使用其方法的示例代码:

```javascript
let person = new Object(); 
person.name = 'John'; 
person.age = 30; 

// 使用 Object.assign() 复制属性
let newPerson = Object.assign({}, person); 

// 使用 Object.defineProperty() 定义新属性或修改现有属性
Object.defineProperty(person, 'isAdult', {
  value: person.age >= 18,
  enumerable: true 
}); 

// 使用其他方法... 
```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScriptObject对象是一种基本的数据类型,它是其他所有对象的基础。以下是JavaScriptObject对象的一些常见属性和方法: 属性: - constructor:返回创建该对象实例的函数。 - prototype:允许您向对象添加属性和方法。 方法: - Object.assign():将一个或多个源对象的属性复制到目标对象。 - Object.create():创建一个新对象,使用现有对象作为原型。 - Object.entries():返回一个给定对象自身可枚举属性的键值对数组。 - Object.keys():返回一个给定对象自身可枚举属性的键名数组。 - Object.values():返回一个给定对象自身可枚举属性的键值数组。 - Object.freeze():冻结一个对象,使其不可修改。 - Object.getOwnPropertyDescriptor():返回指定对象上一个自有属性对应的属性描述符。 - Object.getPrototypeOf():返回指定对象的原型(内部[[Prototype]]属性的值)。 - Object.hasOwnProperty():判断一个对象是否具有指定名称的自身属性。 - Object.isFrozen():判断一个对象是否被冻结。 - Object.isPrototypeOf():判断一个对象是否在另一个对象的原型链上。 - Object.setPrototypeOf():设置一个对象的原型(即将一个对象设置为另一个对象的原型)。 - Object.toString():返回表示该对象的字符串。 - Object.valueOf():返回指定对象的原始值。 这只是Object对象的一部分属性和方法,还有其他更多的属性和方法可以在JavaScript使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值