首页
学习
活动
专区
工具
TVP
发布

JS对象到原始转换

JS对象到原始转换复杂性 主要由于某些对象类型存在不止一种原始表示 对象到原始转换三种基本算法 在解释三种算法前需要了解toString valueOf这两个方法 toString...返回对象字符串表示 Array类toString方法会将每个元素转换为字符串,再使用逗号作为分隔符拼接起来 Function类toString方法将定义函数转换为JS源代码字符串 Date类型...toString方法返回一个人类友好(且JS可解析)日期和时间字符串 RegExp类定义toString方法将RegExp对象转换为一个看起来像RegExp字面量字符串 valueOf 把对象转换为代表对象原始...(如果存在这样一个原始) 对象是复合,且多数对象不能真正通过一个原始标识,valueOf方法默认情况只返回对象本身 String Number Boolean包装类定义valueOf返回被包装原始...) 取决于被转换对象类 如果是Date对象,则使用偏字符串算法 其他类型使用偏数值算法 JS内置类型除了Date类都实现了偏数值算法;Date类实现了偏字符串算法 对象转换为布尔 所有对象都转换为

4.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

JavaScript 原始和引用讲解

简单原始) 简单是表示 JavaScript 可用数据或信息最底层形式或最简单形式。简单类型被称为简单,是因为它们是不可细化。...创建一个包含复杂对象变量时,其是内存一个引用地址。引用一个复杂对象时,使用它名称(即变量或对象属性)通过内存引用地址获取该对象。...两者区别在于: 原始是表示 JavaScript 可用数据或信息最底层形式或最简单形式。简单类型被称为原始,是因为它们是不可细化。...由于原始数据大小是固定,所以原始数据是存储于内存栈区里面的。 在 JavaScript ,对象就是一个引用。因为对象可以向下拆分,拆分成多个简单或者复杂。...最后总结一下两者区别: 访问方式 原始:访问到 引用:访问到是引用地址 比较方式 原始:比较 引用:比较是地址 动态属性 原始:无法添加动态属性 引用:可以添加动态属性

96410

JavaScript-原始和引用

一、原始和引用概念 在 ECMAScript ,变量可以存在两种类型,即原始和引用。...(2)存储在栈(stack)简单数据段,也就是说,它们直接存储在变量访问位置。 (3)注意 在许多语言中,字符串都被看作引用类型,而非原始类型,因为字符串长度是可变。...二、栈和堆 2.1 原始存储在栈 为变量赋值时,ECMAScript 解释程序必须判断该原始类型,还是引用类型。...由于这些原始类型占据空间是固定,所以可将他们存储在较小内存区域 - 栈。这样存储便于迅速查寻变量。 2.2 引用存储在堆 如果一个是引用类型,那么它存储空间将从堆中分配。...由于引用大小会改变,所以不能把它放在栈,否则会降低变量查寻的速度。相反,放在变量栈空间中是该对象存储在堆地址。地址大小是固定,所以把它存储在栈对变量性能无任何负面影响。

94251

4.1 红宝书 📒 原始与引用

原始与引用 原始:最简单数据 (Undefined、Null、Boolean、Number、String、Symbol)。我们操作就是存储在变量实际 引用:多个构成对象。...是保存在内存对象。Js不允许直接访问内存位置,不能直接操作对象所在内存空间。实际操作是对该对象引用。 动态属性 原始和引用定义 都是创建一个变量,然后给它赋值。...引用复制实际上是指针,都指向着同一对象。改变一个另一个也会改变 传递参数 ECMAScript 函数参数都是按传递, 也就是函数外会被复制到函数内部参数。...参数形式有可能是原始 也有可能是引用。...ECMAScript函数参数就是局部变量 确定类型 typeof适用于原始类型,对于引用只能判断出是object类型。但是我们通常要知道是什么样对象。

35410

复杂vs原始&&内存空间

事实上,原始存储在栈内存,按来访问。复杂(引用类型)在堆内存里面,按引用地址访问;然后我们会想到局部变量和全局变量在内存存储:下面是我在一个群给一个同行回答(前辈们莫见笑) ?...上述代码可以告诉我们:原始不是对象,原始特殊之处是用于表示简单;   2、原始赋值,存储,比较方式   a、原始在“ 面值(face value)”存储和操作,理解这一点非常重要,因为原始是真实复制...这里重点是,原始是作为不可细化进行存储和操作,引用他们会转移其:这里意思也就是原始类型)在内存每一个都会存储在对应变量中去,也就是一个真实”复制”。   ...创建一个包含复杂对象变量时,其是内存一个引用地址。引用一个复杂对象时,使用它名称(即变量或对象属性)通过内存引用地址获取对象。当我们试图复制一个复杂时候,理解这就非常重要了。...写在后面 相信到这里我们对js原始、复杂、以及他们特性、在内存存储有了比较深入理解,那么让我们开始准确我们JavaScript世界观系列,因为我从高中毕业后接触前端,对原生热爱程度远远大于

82270

JavaScript 原始与包装对象

在 JavaScript 最初实现,JavaScript 是由一个表示类型标签和实际数据表示。对象类型标签是 0。...The history of “typeof null”:https://2ality.com/2013/10/typeof-null.html 原始 (Primitive values) 原始也就是原始类型...原始是一种没有任何方法非对象数据。 也就是说,string、number 和 boolean 等原始类型本身是没有任何属性和方法。...最后我们来总结一下: 多数原始类型都有相应包装对象; 有些包装对象可以被 new,有些不行; 包装对象一般被用来进行显式类型转换; 对象上有属性和方法; 原始上没有属性和方法; 原始上也不能有属性和方法...; 但我们可以像操作对象一样来操作原始; 这是因为 JavaScript 在执行代码时候偷偷搞小动作; JavaScript 会用临时包装对象来替原始执行操作。

83310

JavaScript 原始与包装对象

在 JavaScript 最初实现,JavaScript 是由一个表示类型标签和实际数据表示。对象类型标签是 0。...The history of “typeof null”:https://2ality.com/2013/10/typeof-null.html 原始 (Primitive values) 原始也就是原始类型...原始是一种没有任何方法非对象数据。 也就是说,string、number 和 boolean 等原始类型本身是没有任何属性和方法。...最后我们来总结一下: 多数原始类型都有相应包装对象; 有些包装对象可以被 new,有些不行; 包装对象一般被用来进行显式类型转换; 对象上有属性和方法; 原始上没有属性和方法; 原始上也不能有属性和方法...; 但我们可以像操作对象一样来操作原始; 这是因为 JavaScript 在执行代码时候偷偷搞小动作; JavaScript 会用临时包装对象来替原始执行操作。

91040

js如何判断数组包含某个特定_js数组是否包含某个

array.indexOf 判断数组是否存在某个,如果存在返回数组元素下标,否则返回-1 let arr = ['something', 'anything', 'nothing',...参数:searchElement 需要查找元素。 参数:thisArg(可选) 从该索引处开始查找 searchElement。...numbers.includes(8); # 结果: true result = numbers.includes(118); # 结果: false array.find(callback[, thisArg]) 返回数组满足条件第一个元素...== 3; }); # 结果: Object { id: 3, name: "nothing" } array.findIndex(callback[, thisArg]) 返回数组满足条件第一个元素索引...方法,该方法返回元素在数组下标,如果不存在与数组,那么返回-1; 参数:searchElement 需要查找元素

18.3K40

swift 枚举(枚举关联、枚举原始、递归枚举等)

= "C" case winter = "D" } 注意: 原始和关联是不同。...原始是在定义枚举时被预先填充。对于一个特定枚举成员,它原始始终不变。关联是创建一个基于枚举成员常量或变量时才设置,枚举成员关联可以变化。...原始隐式赋值 当使用整数作为枚举成员原始时,隐式赋值依次递增1 enum Season:Int { case spring = 1 case summer case...autumn case winter } 当使用字符串作为枚举类型原始时,每个枚举成员隐式原始为该枚举成员名称 enum Season:String { case spring...) 使用原始初始化枚举实例 可以通过rawValue初始化一个枚举成员,返回则是枚举成员或nil 可以通过这个来判断这个新枚举成员是否在枚举 enum Season:Int { case

16610

ES6 学习笔记(三)原始与引用

1.1、 ES6种原始: Undefined、Null、Boolean、Number、String、Symbol 1.2、 保存原始变量是按访问,操作存储在变量内存实际 2、引用,...表示有多个原始或其他引用)构成对象 2.1、 ES不允许直接访问对象内存空间。...2.2、 实际操作对象时,访问是保存对象内存地址,即该对象引用。 3、动态属性 3.1、 原始是不可改变。 3.2、 引用(对象)可以随时添加、修改和删除它属性和方法。...为了方便操作原始,ES提供了3特殊引用类型:Boolean、Number和String。...每当用到某个原始方法或属性时,后台会创建一个相应原始包装类型对象,从而暴露出操作原始各种方法。

26820

JS获取图片原始宽高

最近在给博客相册模块做优化,需要知道图片原始大小,我以前做法是把图片真实宽高分别放在data-width和data-height,效果是达到了,但是总觉得扩展性很低,当不知道图片大小时,还要一张一张图片去查看图片信息手动输入图片大小...,很繁琐 获取图片大小: 1.使用innerWidth,innerHeight 使用HTMLImageElement.innerWidth 是可以拿到图片宽度 但是需要注意是这里拿到宽度是图像在CSS...像素渲染宽度 也就是说如果图片原始大小1200,使用css或者width属性设置为600,那么这里拿到宽度为600,显然用innerWidth获取图片原始尺寸是不靠谱 2.使用document.createElement...需要注意是在给imgsrc赋值时,这是一个异步过程,会存在获取img宽度时值为0(图片还未加载完成),可以在给img赋值之前加上onload事件 var img = document.createElement....jpg" 3.使用naturalWidth(推荐) 使用HTMLImageElement.naturalWidth拿到图像在CSS像素中固有的宽度,如果可用的话; 否则, 返回0 这样就可以拿到图片原始大小

6.1K20

js类型和引用类型区别

js类型和引用类型区别 1.JavaScript变量类型有哪些?...因此,所有在方法定义变量都是放在栈内存;栈存储是基础变量以及一些对象引用变量,基础变量是存储在栈,而引用变量存储在栈是指向堆数组或者对象地址,这就是为何修改引用类型总会影响到其他指向这个地址引用变量...var num1 = 5; var num2 = num1 上述例子,num1保存是5,当使用 num1 来初始化 num2 时,num2 也保存了 5。...但 num2 5 与 num1 5 是完全独立,该只是 num1 5 一个副本。此后,这两个变量可以参与任何操作而不会相互影响。...但是,当接下来再访问 person.name 时,显示仍然是"Nicholas"。 这说明即使在函数内部修改了参数,但原始引用仍然保持未变。

3.4K20
领券