JS学习之Object
前言
上篇文章介绍了JS的对象,本文将介绍Object这个基类,主要介绍其属性和方法(其实这些在MDN里都有^_^,点击这里可以直通MDN)。好了废话不多说了,直接开始。文中的Object
多为构造函数Object
原型对象
Object.prototype
prototype
属性为函数的专属属性,表示函数的原型对象。该属性表示Object
对象的原型对象,此处的Objcet
为构造函数Object
而不是对象实例。下图可以证明。
Object.prototype.__proto__
该属性为访问器属性,即为有get和set函数的属性,可以直接赋值。若有对象实例obj则可直接访问该属性obj.__proto__
。Object.getPrototypeOf(obj)
该方法获得对象实例obj的原型对象。获得的对象与对象的__proto__
属性的值相同。Object.setPrototypeOf(obj, prototype)
该方法是将prototype对象设为obj对象的原型对象。该方法是ES6的标准。prototypeObject.isPrototypeOf(obj)
该方法判断prototypeObject
对象是否在obj
对象的原型链上。
关于各种数据类型的prototype属性的展示
对象的构造器函数
Object.prototype.constructor
该属性指向创建该对象原型的构造函数。其返回为一个具体的函数而不是引用或对象。
对象的属性
Object.defineProperty(obj,prop,desc)
、Object.defineProperties(obj, {prop1:desc1, prop2:desc2})
上面两个方法都是给对象obj
添加或修改自身属性,前者只能操作一个属性,或者可以操作多个属性。其参数中prop为属性名,desc为属性描述符。两个方法都返回改变后的对象obj。Object.getOwnPropertyNames(obj)
该方法获得对象obj的所有自身属性的属性名组成的数组(包括不可枚举属性)。数组中元素的排列顺序未知(以我自己有限的几个例子看,应该是按定义的先后顺序排列)。Object.getOwnPropertyDescriptor(obj, prop)
、Object.getOwnPropertyDescriptors(obj)
两个方法都是获取对象obj的自身属性的属性描述符,前者只是取得某个属性的描述符,后者获取整个对象的所有自身属性的描述符。Object.entries(obj)
该方法返回对象自身属性中所有可枚举的属性的键值对(属性名:值)组成的数组。Object.keys(obj)
该方法与上面的方法相似,也是遍历对象中的可枚举属性,只是此方法返回的是对象中可枚举的自身属性的属性名组成的数组。Object.getOwnPropertySymblos(obj)
该方法会返回一个数组,该数组包含了指定对象自身的(非继承的)所有 symbol 属性键。(此方法为ES6规范)Object.prototype.propertyIsEnumerable(prop)
(obj.propertyIsEnumerable(prop)
)
判断属性prop
是否是对象obj
的可枚举的自身属性。Object.prototype.hadsOwnProperty(prop)
(obj.hadsOwnProperty(prop)
)
判断obj
对象是否含有prop
自身属性。
对象扩展及新建
Object.assign(target, ...sources)
该方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。Object.create(prototype, [ propertiesObject ])
该方法创建一个拥有指定原型和若干个指定属性的对象。
对象状态
Object.preventExtensions(obj)
、'Object.isExtensible(obj)'
对对象的可扩展状态设置和判断,对象默认可扩展。前者是让obj
对象变得不可扩展。后者是判断obj
对象是否能够扩展。Object.seal(obj)
`Object.isSealed(obj)`
对对象的密封状态的设置和判断。前者让obj
对象密封,后者判断obj
对象是否被密封。密封对象是指那些不能添加新的属性,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性,但可能可以修改已有属性的值的对象。Object.freeze(obj)
、Object.isFrozen(obj)
对对象的冻结状态的设置和判断,前者让冻结obj对象,后者判断对象obj是否被冻结。冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。
其他
Object.is(value1, value2)
该方法为同值判断,即判断value1
和value2
是否为同一个值,与===
号不同的是,该方法会将两个NaN
判断为同一个值,而+0
和-0
为不同的值。Object.prototype.toLocalString()
、Object.prototype.toString()
返回一个表示该对象的字符串。toLocaleString()
方法主要用于被本地化相关对象覆盖。覆盖了该方法的对象有Array
、Number
、Date
。toString()
方法可以用来检测对象类型。其用法为Object.prototype.toString.call(obj)
,其返回值的格式为[object ObjectName]
。Object.prototype.valueOf()
该方法返回对象的原始值。这个方法用的不多,大多数情况下JS会自动调用此函数,另外一些就是其他对象重写了此函数的情况。
结语
本人初学JS,内容基本上从MDN上搬过来的自己的理解不是很多,再加上初中作文凑不齐600字的语文水平(-_-|)……
本文内容如有错漏,望请指正,不胜感激!
JS学习之Object相关推荐
- 《JS学习》Object对象
介绍 JavaScript中的对象其实就是一组数据和功能的集合. 通过new操作符后跟要创建的对象类型的名称来创建. new: 从指定模具中复刻出一个一模一样的空间,此空间与外界隔离,视为实例 ...
- JS学习笔记(九)深拷贝浅拷贝【Array、Object为例】
JS学习笔记(九) 本系列更多文章,可以查看专栏 JS学习笔记 文章目录 JS学习笔记(九) 一.赋值&复制 二.浅拷贝(shallow copy) 1. 什么是浅拷贝 2. 数组的浅拷贝 ( ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- node.js学习笔记5——核心模块1
node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...
- React.js学习(一):设计并实现一个“任务清单列表”
今日算是React.js学习的第一天,经过昨天前端基本知识的学习,让我能比较顺利的上手React框架.今日实践是一个网页记事清单,由于不是很熟练,任务删除还没写,懒得写的了,做个总结. 1.React ...
- Three.js学习七——播放模型动画时模型沿着轨迹移动
目录 效果描述 实现流程 基本流程 工程文件 搭建场景 添加模型和播放动画 添加路径和模型移动 完整代码和实现效果 效果描述 在播放导入的模型动画同时,让模型沿着预定路径轨迹移动.例如导入一个会跑步动 ...
- Three.js学习五——让模型沿着轨迹移动
目录 流程 搭建场景环境 添加模型 增加运动轨迹 让模型沿轨迹运动 完整代码和效果 流程 基本流程 1.添加模型 2.增加运动轨迹 3.让模型沿轨迹运动 工程文件结构如下图: static:存放静态资 ...
- Lodash.js学习(一)——初识Lodash
前言 Loash.js是一个一致性.模块化.高性能的 JavaScript 实用工具库.通过降低 array.number.objects.string 等等的使用难度从而让 JavaScript 变 ...
- Mock.Js学习报告
2021_12_26 Mock.Js学习报告 from GXC Mock.Js背景简介: Mock.Js是一种模拟前后端Ajax数据交互的数据方法结构在我们进行前端页面开发时,可能会又面临到项目需求中 ...
- 商情云 | php学习 | wampserver | 宝塔面板 | fastadmin框架 | JS学习
宝塔面板 相关配置文件位置 D:\hc\baota 处理函数被禁用问题 问题:wampserver图标变橙了 解决:wampserver三个服务分别是Apache.PHP.MySQL,变红说明三个服务 ...
最新文章
- java 外部类似_[求指点] 如何用java 实现类似linux中管道调用外部程序的功能
- 如何使用 CODING 实践 DevOps 全流程
- 解决System.Data.SqlClient.SqlException (0x80131904): Timeout 时间已到的问题
- IOS仿微信朋友圈的日期处理
- Wannafly挑战赛17
- Tomcat下部署多个项目
- 数据湖就是坑人的新概念?那些挖坑的企业,后来都怎么样了
- 修改disk驱动监控文件系统的IO特征
- 4. Firebug 调试 Js
- C#快速排序源码演示
- DOA算法1:MUSIC算法(一)
- 【数字通信】Matlab实现16QAM调制与解调,判决,误码率计算
- 计算机毕业论文指导,计算机毕业论文指导
- android 文本倒影,Android 生成倒影图片
- Notepad++ 7.6版本 安装hexeditor最新详细版本(小白版)
- php 截图ppt文件,介绍ppt文件截图并插入
- 如何完成点、线、面的发展,实现降维打击
- 【R语言编程基础】【课后习题答案】【全】
- 【xitongshoucang.com】vista登录界面在win 7系统中如何保留
- 算法题解 —— 链表(6-10)
热门文章
- 谈谈Cost function and gradient的matlab写法
- 爱情指数测试脸型软件,心理测试:你和谁的脸型最像?测出你的幸运指数是多少!...
- linux火狐浏览器和爬虫,爬虫入门:Firefox 结合 Scrapy Shell 爬取网页数据
- php mysqli 字段缺失,mysqli 为什么不提示字段异常
- 小程序mysql+php测试,莲米粒是一个基于PHP+MySQL+微信小程序技术栈
- python中如何导入图片_python如何导入图片
- Java 抽象类 接口
- http是不是中间件_等保2.0涉及的Apache Tomcat中间件(上)
- 事务例子_耗时3周!7000+字的Spring事务总结来啦
- php构造函数里抛出异常_构造函数、析构函数抛出异常的问题