JavaScript对象之对象标签和对象序列化
对象标签有三种:proto、class和extensible。
一、proto标签
例如我新建了一个person对象,那么其__proto__则指向Person.prototype,然后Person.prototype的__proto__则指向Object.prototype,Object.prototype的__proto__则指向null,从而形成完整的原型链。
二、class标签

上图的要点为:
1. Object.prototype.toString.call(o)则是相当于o.toString(),o作为this传入,跟apply的用法很像。
2.slice(8,-1)即是截出第8个字符到最后一个字符(不包括最后一个字符)的字符串,旨在截出[object Xxx]中的Xxx。
3.typeof new Number(1)返回object,但是使用toString返回的是Number,toString更为精准一些。(typeof null返回object,而toString则返回null。)
三、extensible标签

上图的要点为:
1.用isExtensible判断是否可扩展属性,用preventExtensions来阻止扩展,此时原对象属性的属性标签不受影响。
2.用isSealed判断是否被封印,用seal来封印对象,此时原对象的属性标签变成不可配置了。
3.用isFrozen判断是否被冻结,用freeze来冻结对象,此时原对象的属性标签变成不可写且不可配置了。
4.以上三种操作对属性标签的影响程度一步步地加深,但是对对象的操作不会影响其原型链(prototype chain)前端部分的情况。
接下来我们学习下对象序列化。

上图的要点为:
1.把对象变为字符串的过程称为对象序列化,序列化后对象的key会加上双引号,对象的花括号前后都会加上双引号。
2.若对象属性为undefined,则序列化后属性便去掉了。若属性值为NaN或Infinity(无穷),则序列化后属性会变为null。若属性值为Date对象,则序列化后会变为UTC格式。

上图的要点为:对象内部加上toJSON方法,从而自定义序列化过程。

上图的要点为:
1.obj.toString()可直接输出[object Object]字符串,相当于Object.prototype.toString.apply/call(obj)。
2.可在对象内部重写toString和valueOf方法。
3.+obj首先会调用valueOf,看能否变成非对象,若不能,则调用toString,若仍不能转成非对象,则报错。
JavaScript对象之对象标签和对象序列化的更多相关文章
- 了解JavaScript 对象属性的标签
对象属性的标签 value(属性值), writable(属性可写), enumerable(属性可枚举), configurable(属性可配置), 这些属性标签使对象所持有的属性体现出不同的特性, ...
- JavaScript对象之属性标签
本文介绍一下js对象的属性标签(configurable.writable.enumerable.value.get.set)的使用. 上图的要点为: 1.Object.getOwnPropertyD ...
- 《JavaScript 闯关记》之对象
对象是 JavaScript 的数据类型.它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值,因此我们可以把它看成是从字符串到值的映射.对象是动态的,可以随时新增和删除自有属性.对象除了 ...
- jQuery选择器ID、CLASS、标签获取对象值、属性、设置css样式
jQuery是继prototype之后又一个优秀的Javascrīpt框架.它是轻量级的js库(压缩后只有21k) , 它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safa ...
- JavaScript高级用法三之浏览器对象
综述 本篇的主要内容来自慕课网,内置对象,主要内容如下 1 window对象 2 JavaScript 计时器 3 计时器setInterval() 4 取消计时器clearInterval() 5 ...
- Window 对象 HTML框架标签(Frame)
Window 对象 Window 对象表示浏览器中打开的窗口. 如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外 ...
- 【笔记】javascript权威指南-第六章-对象
对象 //本书是指:javascript权威指南 //以下内容摘记时间为:2013.7.28 对象的定义: 1.对象是一种复合值:将很多值(原始值或者对象)聚合在一起,可以通过名字访问这些值. ...
- [JQuery] jQuery选择器ID、CLASS、标签获取对象值、属性、设置css样式
reference : http://www.suyunyou.com/aid1657.html jQuery是继prototype之后又一个优秀的Javascrīpt框架.它是轻量级的js库(压缩后 ...
- JavaScript进阶 - 第9章 DOM对象,控制HTML元素
第9章 DOM对象,控制HTML元素 9-1 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属 ...
随机推荐
- ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
原文:https://www.stevejgordon.co.uk/httpclientfactory-using-polly-for-transient-fault-handling发表于:2018 ...
- codeforces 99999/553 Sultan's Pearls Solution 珍珠 题解
文章目录 珍珠 题意 分析 增加限定条件 去掉限定条件 Code 珍珠 题意 一共n课珍珠,m颗悬挂,其余在桌子上.如图所示. 仆人每天从某一端"借"一颗珍珠珠.主人每天都会检查悬 ...
- js -- 移动端pc端自动切换
1. 判断浏览器类型 浏览器判断使用的github开源项目current-device,下面是地址: https://github.com/matthewhudson/current-device 在 ...
- 为什么SSL证书要设有效期?
1.首先是为了安全考虑,CA机构不能保证一个网站永远是合法的,因此它需要定期检查网站. 2.其次,以往CA证书都非常贵,签发证书的机构通过设置期限来收费,是一种商业途径. 3.最后,还有最重要的原因就 ...
- SendMessage模拟按键所需的虚拟键码
Virtual-Key Codes The following table shows the symbolic constant names, hexadecimal values, and mou ...
- 洛谷P3367 【模板】并查集 模板 找baba
链接https://www.luogu.org/problem/P3367 #include<bits/stdc++.h> using namespace std; ; int fa[ra ...
- MongoDB geonear和文本命令驱动程序2.0
文本查询,q作为查询字符串: coll.FindAsync<Foo>(Builders<Foo>.Filter.Text(q)); 文本查询需要一个文本索引.要从C#创建代码, ...
- H3C 静态路由
一.静态路由简介 静态路由是一种特殊的路由,由管理员手工配置.当网络结构比较简单时,只需配置静态路由就可以使网络正常工作. 静态路由不能自动适应网络拓扑结构的变化.当网络发生故障或者拓扑发生变化后,必 ...
- [CF3B] Lorry - 贪心
有一辆载重量为 v 的货车, 准备运送两种物品. 物品 A 的重量为 1, 物体 B 的重量为 2, 每个物品都有一个价值. 求货车可以运送的物品的最大价值. Solution 考虑把物品分为两类,枚 ...
- Bootstrap框架中radio设置值
Bootstrap中的radio设置值不能像我们平常给普通radio赋值那样,因为无效. 我们用Bootstrap框架里的radio组件,代码: <div class="radio-l ...