对象其一

本文深入探讨JavaScript对象的特性,包括其作为属性无序集合的基础,属性的可读写、可枚举及可配置性,以及动态性。重点介绍了原型式继承,每个对象如何关联另一个对象并继承其属性。此外,阐述了如何使用Object.create()创建对象,并通过实例展示了对象字面量的用法。最后,讨论了对象的原型、扩展标记以及对象的三个相关特性:原型、类和扩展标记。
摘要由CSDN通过智能技术生成

JavaScript对象的特征

JavaScript的基本数据类型,一种复合值,可看做是属性的无序集合。

每个属性都是一个名/值对。

属性名是字符串,因此可以把对象看成是从字符串到值得映射。

对象除了可以保持自有的属性,还可以从一个称为原型的对象继承属性。

原型式继承(prototypal inheritance)是JavaScript的核心特征。

对象是动态的,可以增加或删除属性。

除了字符串、数值、truefalsenullundefined,其他值都是对象。

 

对象最常见的用法是对其属性进行创建、设置、查找、删除、检测和枚举等操作。

属性值是任意JavaScript值,或者是一个gettersetter函数。

每个属性还有一些与之相关的值,称为“属性特征(property abttribute)”。

可写(writable attribute),表明是否可以设置属性的值。

可枚举(enumerable attribute),表明是否可以通过for/in结构返回该属性。

可配置(configurable attribute),表明是否可以删除或修改该属性。

每个对象还拥有三个相关的对象特性

对象的原型(prototype),指向另一个对象,该对象的属性会被当前对象继承。

对象的类(class),一个标识对象类型的字符串。

对象的扩展标记(extensible flag),指明了是否可以向该对象添加新属性。

对象字面量

let empty = {}; //没有任何属性的对象

let point = { x: 0, y: 0 }; //具有属性的对象

let book = {

  //属性名中有空格,必须用字符串表示。

  "main title": "JavaScript",

  //属性名中有特殊字符,必须用字符串表示

  "sub-title": "The Definitive Gruide", 

  //属性名可以是保留字,但尽量避免。

  for: "all audiences", 

  //属性值可以是一个对象。  

  author: {

    firstname: "David",

    lastname: "Flanagan",

  },

};

对象字面量是一个表达式,每次运算都会创建一个新的对象,其中的属性值也会重新计算。

原型

每一个JavaScript对象(null除外)都和另一个对象相关联,另一个对象”就是原型对象。

每一个对象都从原型继承属性。

所有通过对象字面量创建的对象都具有同一个原型对象。

通过new和构造函数创建的对象的原型就是构造函数的prototype属性引用的对象,如:new Array()对象的原型就是Array.prototype

极少对象没有原型,如:Object.prototype,它不继承任何属性。

所有内置构造函数都具有一个继承自Object.prototype的原型

举例:

let obj = { value: 100 };

Object.prototype.flag = "head";

console.log(obj.flag);

let arr = [1, 2, 3, 4];

console.log(arr.flag);

创建对象

Object.create( )

// obj1继承了属性xy

let obj1 = Object.create({ x: 1, y: 2 });

//obj2不继承任何属性和方法。

let obj2 = Object.create(null);

//obj3是一个普通的空对象。

let obj3 = Object.create(Object.prototype);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值