摘要:文中的多为构造函数原型对象属性为函数的专属属性,表示函数的原型对象。关于各种数据类型的属性的展示对象的构造器函数该属性指向创建该对象原型的构造函数。对对象的冻结状态的设置和判断,前者让冻结对象,后者判断对象是否被冻结。
前言
上篇文章介绍了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字的语文水平(-_-|)……
本文内容如有错漏,望请指正,不胜感激!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81197.html
摘要:本次主要分享关于上一篇区域的学习。区域为的核心部分,它的结构如下为了便于梳理思路,以上代码省略了细节,只保留了轮廓脉络。最终暴露给开发者的如下图所示这里只分析了区域的结构,下一次会深入到函数语句粒度。 本次主要分享关于上一篇区域2的学习。区域2为Zepto的核心部分,它的结构如下 var Zepto = (function() { var $, zepto = {}; fu...
摘要:继承是面向对象编程语言中的一个重要的概念,继承可以使得子类具有父类的属性和方法或者重新定义追加属性和方法等。但是在中没有类的概念,是基于原型的语言,所以这就意味着对象可以直接从其他对象继承。 继承是面向对象编程语言中的一个重要的概念,继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。但是在Javascript中没有类的概念,是基于原型的语言,所以这就意味着对象可以直接...
摘要:对象篇简介本身就是一个函数,可用于工具函数,也可以是用于构造对象的函数其次可以添加属性和方法方法又可以分为静态方法定义在自身上的和实例方法定义在原型上的工具函数作为工具函数参数可以是任意数据类型,将其转为对象如果参数是空,,则将其转换为空对 对象篇 Object简介 Object本身就是一个函数,可用于工具函数,也可以是用于构造对象的函数;其次Object可以添加属性和方法;方法又可以...
摘要:命令作用作用是执行构造函数,返回实例对象上面例子是自定义一个构造函数,其最大的特点就是首字母大写,用执行构造函数其中,在的执行下,代表了实例化后的对象,这个也就有属性注意点如果不用执行构造函数,那么指向的是全局有两种方式可以避免内部定义严格 new命令 new作用 作用是执行构造函数,返回实例对象 function F() { this.name = object } var ...
摘要:搬家篇三开胃菜因为大于等于的比较,不是相等的比较,所以值得注意的操作符一元操作符通过进行转换其中包括号运算符,号运算符,都是经转换逻辑运算符等价于将操作数进行布尔值类型转换位操作当一边操作数为时,可等价于操作数为由以下变化可以证得加号运算 搬家篇三 开胃菜 [] == ![] //true ==> == false 123 ^ [] ...
阅读 2322·2023-04-26 00:28
阅读 3067·2019-08-30 15:55
阅读 2741·2019-08-30 12:47
阅读 1549·2019-08-29 11:04
阅读 3149·2019-08-28 18:14
阅读 945·2019-08-28 18:11
阅读 1670·2019-08-26 18:36
阅读 3382·2019-08-23 18:21