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,若仍不能转成非对象,则报错。

原文地址:https://www.cnblogs.com/luoyihao/p/12231424.html

时间: 2024-07-30 23:26:23

JavaScript对象之对象标签和对象序列化的相关文章

了解JavaScript 对象属性的标签

对象属性的标签 value(属性值), writable(属性可写), enumerable(属性可枚举), configurable(属性可配置), 这些属性标签使对象所持有的属性体现出不同的特性, 以便开发者开发使用. value value, 属性的值, 这个属性是最直观的体现, 一个属性我们使用的就是它的值, 这个值的类型可以是对象, 字符串, 值等任意类型. 如果未设置的话, 值会是undefined. Object.defineProperty(person, 'name', { c

JavaScript对象之属性标签

本文介绍一下js对象的属性标签(configurable.writable.enumerable.value.get.set)的使用. 上图的要点为: 1.Object.getOwnPropertyDescriptor(obj,attr)可以获取属性标签的信息. 2.configurable控制属性是否可配置,writable控制属性是否可直接修改,enumerable控制属性是否可被枚举出来. 上图中Object.keys(person)不会输出不能被枚举的对象属性. 上图的要点为: 1.使用

JavaScript进阶 - 第8章 浏览器对象

第8章 浏览器对象 8-1 window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法: 注意:在JavaScript基础篇中,已讲解了部分属性,window对象重点讲解计时器. 任务 在右边编辑器script标签内补充代码,弹出对话框"欢迎来到慕课网". 定义一个函数,实现打开一个网页,宽为600,高为400. 当点击"点击我,打开新窗口"按钮时,在打开网页. 如果忘记了,可以查看JavaScript基础篇. 代码

JavaScript高级用法三之浏览器对象

综述 本篇的主要内容来自慕课网,内置对象,主要内容如下 1 window对象 2 JavaScript 计时器 3 计时器setInterval() 4 取消计时器clearInterval() 5 计时器setTimeout() 6 取消计时器clearTimeout() 7 History 对象 8 返回前一个浏览的页面 9 返回下一个浏览的页面 10 返回浏览历史中的其他页面 11 Location对象 12 Navigator对象 13 userAgent 14 screen对象 15

阮一峰老师的JavaScript标准参考教程:Object对象和Object方法

Object对象 1. 概述 1.1 生成方法 对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型. 什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合. var obj = { foo: 'Hello', bar: 'World' }; 上面代码中,大括号就定义了一个对象,它被赋值给变量obj,所以变量obj就指向一个对象.该对象内部包含两个键值对(又称为两个“成员”),第一个键值对是foo: 'Hello',其中f

Javascript 解析字符串生成 XML DOM 对象。

Javascript 接收字符串生成 XML DOM 对象.实测对 Firefox .IE6 有效.可用于解析 ajax 的服务器响应结果,也可用于解析自定义字符串.?1. [代码]函数   ppt模版  /** * Parses DOM from XML text.<br /> *  * @author Typhoon.Free.Wolf * @version 2014-02-28_15-51 * @param blDebugFlag *      - Debug flag: true, f

javaScript事件(三)事件对象

一.事件 二.事件流 以上内容见:javaScript事件(一)事件流 三.事件处理程序 四.IE事件处理程序 以上内容见javaScript事件(二)事件处理程序 五.事件对象 1.认识事件对象 事件在浏览器中是以对象的形式存在的,即event.触发一个事件,就会产生一个事件对象event,该对象包含着所有与事件有关的信息.包括导致事件的元素.事件的类型以及其他与特定事件相关的信息. 例如:鼠标操作产生的event中会包含鼠标位置的信息:键盘操作产生的event中会包含与按下的键有关的信息.

JavaScript学习12 JS中定义对象的几种方式【转】

avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript

javascript——对象的概念——内建对象

包括内建对象的所有对象都是Object对象的子对象. 1.Array():构建数组的内建构造器函数 例:创建数组方式有两种: 2.Boolean:是对象,与基本数据类型 布尔值 不相同 例:创建Boolean对象. 上例中 a 是对象而不是布尔值.可以通过valueOf()获取其布尔值.通常 Boolean 对象不会用于创建对象,而是利用该对象强制转换数据类型. 在强制转换时,以下内容将被转换为 false:空字符串'';null;undefined;数字0;NaN;false; 例: 即:Bo