JavaScript对象详解:定义与创建方法

需积分: 5 0 下载量 122 浏览量 更新于2024-08-03 收藏 44KB MD 举报
"这篇文档是关于JavaScript对象的介绍,由尚硅谷大前端教学部的李晶撰写。文档首先探讨了JavaScript对象的概念,通过生活中的例子解释了对象、属性和方法的含义,然后详细阐述了JavaScript中对象的定义,包括如何使用`new`关键字创建对象以及通过工厂函数来创建对象的方法。" 在JavaScript中,对象是一种复杂的数据结构,它能够存储多个相关数据(称为属性)以及可以执行操作的代码块(称为方法)。JavaScript对象是基于原型的,这意味着它们可以从其他对象继承特性。在文档中,作者通过一个生动的例子——汽车,来解释对象的概念。汽车作为一个对象,具有像车重和颜色这样的属性,以及启动和停止这样的方法。这些属性和方法共同定义了汽车的行为和状态。 接着,文档介绍了JavaScript中不同类型的值与对象的关系。虽然JavaScript有七种原始数据类型(Undefined、Null、Boolean、Number、BigInt、String、Symbol),但当使用`new`关键字时,布尔、数字和字符串也会被转换为对象。日期、正则表达式、数组、函数以及普通对象都是始终以对象形式存在的。值得注意的是,所有的函数都是对象,这意味着它们可以有属性和方法。 创建JavaScript对象有两种主要方式: 1. 使用`new`关键字和内置的`Object`构造函数: ```js var obj = new Object(); obj.name = '大哥'; obj.age = 34; obj.gender = true; obj.eat = function() { console.log('吃卤煮~~'); } ``` 这种方式可以直接创建一个空对象,并动态添加属性和方法。 2. 使用工厂函数: ```js function createPerson(name, age, gender) { var obj = new Object(); obj.name = name; obj.age = age; obj.gender = gender; obj.eat = function() { console.log(obj.name + '吃卤煮~~'); } return obj; } var person = createPerson('大哥', 34, true); ``` 工厂函数提供了一种更抽象的方式来创建对象,它可以接受参数并返回一个定制的对象实例。 在JavaScript中,对象是编程的核心,理解其工作原理对于深入学习和应用JavaScript至关重要。对象允许我们组织和操作数据,实现模块化和面向对象编程,从而提高代码的复用性和可维护性。通过组合不同的属性和方法,JavaScript对象可以表示各种复杂的现实世界概念,使得JavaScript成为开发Web应用的强大工具。

import { Sha256 } from '@aws-crypto/sha256-js' import CryptoJs from 'crypto-js' import encHex from 'crypto-js/enc-hex' onmessage = async function (event) { const data = event.data // 获取文件数据 // chunk方式读取文件 const chunkSize = 1024 * 1024 // 每次读取1MB const fileSize = data.size // 文件大小 let offset = 0 // 偏移量 const createSha256Uint8Array32 = new Sha256() // SHA256 Unit8Array(32) const createSha256 = CryptoJs.algo.SHA256.create() // SHA256 Hex const createMD5 = CryptoJs.algo.MD5.create() // MD5 while (offset < fileSize) { const chunk = new Uint8Array(await data.slice(offset, offset + chunkSize).arrayBuffer()) // 读取chunkSize大小的文件块 const wordArray = CryptoJs.lib.WordArray.create(chunk) createSha256.update(wordArray) createMD5.update(wordArray) createSha256Uint8Array32.update(chunk) offset += chunkSize // 计算进度 // const progress = Math.min(100, Math.round((offset / fileSize) * 100)) // console.log(progress) // 打印进度 // postMessage({ progress, offset, fileSize, }) // 将进度发送给主线程 } const [sha256Uint8Array32, sha256, md5] = await Promise.all([ createSha256Uint8Array32.digest(), // SHA256 Unit8Array(32) encHex.stringify(createSha256.finalize()), // SHA256 Hex encHex.stringify(createMD5.finalize()), // MD5 ]) const obj = { md5, // MD5 sha256, // SHA256 Hex sha256Int8Array32: Array.from(new Int8Array(sha256Uint8Array32)), // SHA256 Int8Array(32) } console.log(obj) // 打印结果对象 postMessage(obj) // 将结果对象发送给主线程 } 加功能计算文件sha1

2023-06-06 上传