前言

上篇文章介绍了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)
    该方法为同值判断,即判断value1value2是否为同一个值,与===号不同的是,该方法会将两个NaN判断为同一个值,而+0-0为不同的值。

  • Object.prototype.toLocalString()Object.prototype.toString()
    返回一个表示该对象的字符串。toLocaleString()方法主要用于被本地化相关对象覆盖。覆盖了该方法的对象有ArrayNumberDatetoString()方法可以用来检测对象类型。其用法为Object.prototype.toString.call(obj),其返回值的格式为[object ObjectName]

  • Object.prototype.valueOf()
    该方法返回对象的原始值。这个方法用的不多,大多数情况下JS会自动调用此函数,另外一些就是其他对象重写了此函数的情况。

结语

本人初学JS,内容基本上从MDN上搬过来的自己的理解不是很多,再加上初中作文凑不齐600字的语文水平(-_-|)……
本文内容如有错漏,望请指正,不胜感激!

JS学习之Object相关推荐

  1. 《JS学习》Object对象

    介绍 JavaScript中的对象其实就是一组数据和功能的集合. 通过new操作符后跟要创建的对象类型的名称来创建. ​ new: ​ 从指定模具中复刻出一个一模一样的空间,此空间与外界隔离,视为实例 ...

  2. JS学习笔记(九)深拷贝浅拷贝【Array、Object为例】

    JS学习笔记(九) 本系列更多文章,可以查看专栏 JS学习笔记 文章目录 JS学习笔记(九) 一.赋值&复制 二.浅拷贝(shallow copy) 1. 什么是浅拷贝 2. 数组的浅拷贝 ( ...

  3. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

  4. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  5. React.js学习(一):设计并实现一个“任务清单列表”

    今日算是React.js学习的第一天,经过昨天前端基本知识的学习,让我能比较顺利的上手React框架.今日实践是一个网页记事清单,由于不是很熟练,任务删除还没写,懒得写的了,做个总结. 1.React ...

  6. Three.js学习七——播放模型动画时模型沿着轨迹移动

    目录 效果描述 实现流程 基本流程 工程文件 搭建场景 添加模型和播放动画 添加路径和模型移动 完整代码和实现效果 效果描述 在播放导入的模型动画同时,让模型沿着预定路径轨迹移动.例如导入一个会跑步动 ...

  7. Three.js学习五——让模型沿着轨迹移动

    目录 流程 搭建场景环境 添加模型 增加运动轨迹 让模型沿轨迹运动 完整代码和效果 流程 基本流程 1.添加模型 2.增加运动轨迹 3.让模型沿轨迹运动 工程文件结构如下图: static:存放静态资 ...

  8. Lodash.js学习(一)——初识Lodash

    前言 Loash.js是一个一致性.模块化.高性能的 JavaScript 实用工具库.通过降低 array.number.objects.string 等等的使用难度从而让 JavaScript 变 ...

  9. Mock.Js学习报告

    2021_12_26 Mock.Js学习报告 from GXC Mock.Js背景简介: Mock.Js是一种模拟前后端Ajax数据交互的数据方法结构在我们进行前端页面开发时,可能会又面临到项目需求中 ...

  10. 商情云 | php学习 | wampserver | 宝塔面板 | fastadmin框架 | JS学习

    宝塔面板 相关配置文件位置 D:\hc\baota 处理函数被禁用问题 问题:wampserver图标变橙了 解决:wampserver三个服务分别是Apache.PHP.MySQL,变红说明三个服务 ...

最新文章

  1. java 外部类似_[求指点] 如何用java 实现类似linux中管道调用外部程序的功能
  2. 如何使用 CODING 实践 DevOps 全流程
  3. 解决System.Data.SqlClient.SqlException (0x80131904): Timeout 时间已到的问题
  4. IOS仿微信朋友圈的日期处理
  5. Wannafly挑战赛17
  6. Tomcat下部署多个项目
  7. 数据湖就是坑人的新概念?那些挖坑的企业,后来都怎么样了
  8. 修改disk驱动监控文件系统的IO特征
  9. 4. Firebug 调试 Js
  10. C#快速排序源码演示
  11. DOA算法1:MUSIC算法(一)
  12. 【数字通信】Matlab实现16QAM调制与解调,判决,误码率计算
  13. 计算机毕业论文指导,计算机毕业论文指导
  14. android 文本倒影,Android 生成倒影图片
  15. Notepad++ 7.6版本 安装hexeditor最新详细版本(小白版)
  16. php 截图ppt文件,介绍ppt文件截图并插入
  17. 如何完成点、线、面的发展,实现降维打击
  18. 【R语言编程基础】【课后习题答案】【全】
  19. 【xitongshoucang.com】vista登录界面在win 7系统中如何保留
  20. 算法题解 —— 链表(6-10)

热门文章

  1. 谈谈Cost function and gradient的matlab写法
  2. 爱情指数测试脸型软件,心理测试:你和谁的脸型最像?测出你的幸运指数是多少!...
  3. linux火狐浏览器和爬虫,爬虫入门:Firefox 结合 Scrapy Shell 爬取网页数据
  4. php mysqli 字段缺失,mysqli 为什么不提示字段异常
  5. 小程序mysql+php测试,莲米粒是一个基于PHP+MySQL+微信小程序技术栈
  6. python中如何导入图片_python如何导入图片
  7. Java 抽象类 接口
  8. http是不是中间件_等保2.0涉及的Apache Tomcat中间件(上)
  9. 事务例子_耗时3周!7000+字的Spring事务总结来啦
  10. php构造函数里抛出异常_构造函数、析构函数抛出异常的问题