深入javascript对象语法及应用场景(一)

简介: 深入javascript对象语法及应用场景(一)

前言

       对象是javascript中的一个重要的概念,甚至有“JavaScript 中万物皆是对象”的说法,可以说对于熟悉javascript而言,精通对象的应用场景至关重要,那么到底什么是对象,对象在哪些地方又有怎样的用途呢,这一系列我将带大家深入javascript对象的语法及应用场景

正文

语法

       对象可以通过两种形式定义:声明(文字)形式和构造形式。这个没什么特别的大部分同学应该都知道,举个例子我们简单过一下

640.png


类型

       对象是 JavaScript 的基础。在 JavaScript 中一共有六种主要类型(术语是“语言类型”):String, string, number, boolean, null, undefined, object算上ES6中的symbol就是7种,简单基本类型(string、boolean、number、null 和 undefined)本身并不是对象。null 有时会被当作一种对象类型,但是这其实只是语言本身的一个 bug,即对 null 执行typeof null 时会返回字符串 “object”。1 实际上,null 本身是基本类型。


       所以,有一种常见的错误说法是“JavaScript 中万物皆是对象”,这显然是错误的。简单基本类型并不是对象


内置对象

       JavaScript 中还有一些对象子类型,通常被称为内置对象。有些内置对象的名字看起来和简单基础类型一样,不过实际上它们的关系更复杂:String, Number, Boolean, Object, Function, Array, Date, RegExp, Error。在 JavaScript 中,它们实际上只是一些内置函数。这些内置函数可以当作构造函数来使用,从而可以构造一个对应子类型的新对象。

       原始值 “I am a string” 并不是一个对象,它只是一个字面量,并且是一个不可变的值。如果要在这个字面量上执行一些操作,比如获取长度、访问其中某个字符等,那需要将其转换为 String 对象。在必要时语言会自动把字符串字面量转换成一个 String 对象,也就是说你并不需要显式创建一个对象,这也是为什么虽然是基本类型但是我们可以调用对应对象原型里的方法的原因

可计算属性名

       ES6 增加了可计算属性名,可以在文字形式中使用 [] 包裹一个表达式来当作属性名

640.png

       可计算属性名最常用的场景可能是 ES6 的符号(Symbol),它们是一种新的基础数据类型,包含一个不透明且无法预测的值(从技术角度来说就是一个字符串)。一般来说你不会用到符号的实际值(因为理论上来说在不同的 JavaScript 引擎中值是不同的),所以通常你接触到的是符号的名称,比如 Symbol.Something


数组

       数组也是一个特殊的对象,我们知道数组的属性是数字,有一个很有意思的点我觉得需要提一下,数组的length只与其中是数字的属性相关,也就是增加一个字符串的属性名,是不会影响length的,但是如果你试图向数组添加一个属性,但是属性名“看起来”像一个数字,那它会变成一个数值下标(因此会修改数组的内容而不是添加一个属性)


小结

       这一章我们介绍了对象的基础从正文选择知识,也知道了“js中并不是万物都是对象", 下一章我们将继续这一章节的内容,讲一些和对象有关的进阶知识

目录
相关文章
|
8天前
|
JavaScript 前端开发 API
详解队列在前端的应用,深剖JS中的事件循环Eventloop,再了解微任务和宏任务
该文章详细讲解了队列数据结构在前端开发中的应用,并深入探讨了JavaScript的事件循环机制,区分了宏任务和微任务的执行顺序及其对前端性能的影响。
|
2天前
|
JSON JavaScript 前端开发
js如何格式化一个JSON对象?
js如何格式化一个JSON对象?
10 3
|
8天前
|
自然语言处理 JavaScript 前端开发
JS中this的应用场景,再了解下apply、call和bind!
该文章深入探讨了JavaScript中`this`关键字的多种应用场景,并详细解释了`apply`、`call`和`bind`这三个函数方法的使用技巧和差异。
|
9天前
|
JavaScript 前端开发
js之浏览器对象|28
js之浏览器对象|28
|
8天前
|
缓存 JavaScript 前端开发
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
该文章详细讲解了JavaScript中的作用域、闭包概念及其应用场景,并简要分析了函数柯里化的使用。
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
|
5天前
|
存储 JavaScript 前端开发
JavaScript Number 对象
JavaScript Number 对象
10 0
|
5天前
|
JavaScript 前端开发
JavaScript prototype(原型对象)
JavaScript prototype(原型对象)
11 0
|
5天前
|
JavaScript 前端开发
JavaScript 对象
JavaScript 对象
10 0
|
8天前
|
JavaScript 前端开发 开发者
深入浅出 Vue.js:构建响应式前端应用
Vue.js 是一个流行的前端框架,以其简洁、高效和易学著称。它采用响应式和组件化设计,简化了交互式用户界面的构建。本文详细介绍 Vue.js 的核心概念、基本用法及如何构建响应式前端应用,包括实例、模板、响应式数据和组件等关键要素,并介绍了项目结构、Vue CLI、路由管理和状态管理等内容,帮助开发者高效地开发现代化前端应用。