Array.prototype.sayLength=function(){ console.log(this.length); } let arr = ['a','b','c','d']; arr.name='数组'; Object.defineProperties(arr,{ type:{ value:true, writable:true, enumerable:true } }) // for in 一般用于遍历对象的属性: 1.作用于数组的for in除了会遍历数组元素外,还会遍历自定义…
var parent = Object.create(Object.prototype, { a: { value: 1, writable: true, enumerable: true, configurable: true } }); parent继承自Object.prototype,有一个可枚举的属性a.下面我们在创建一个继承自parent的对象child. var child = Object.create(parent, { b: { value: 2, writable: tru…
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in 循环还会枚举其原型链上的属性). 语法 Object.keys(obj) 参数 obj 要返回其枚举自身属性的对象. 返回值 一个表示给定对象的所有可枚举属性的字符串数组. 描述 Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的对象上面可直接枚举的属性.这些属性的顺序与…
先从'诡异'的问题入手 例1: 纯Number类型的属性 const obj = { 1: 1, 6: 6, 3: 3, 2: 2 } console.log('keys', Object.keys(obj)) // ['1', '2', '3', '6'] 返回的key为什么自动按照升序排序了? 例2: 纯String类型的属性 const obj2 = { a: 'a', c: 'c', f: 'f', b: 'b', } console.log(Object.keys(obj2)) //…
(1)Object.keys() //       返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名. eg:var obj = {a:1,b:'gy'} Object.keys(obj) // ['a','b'] (2)Object.values() //返回 值 数组 返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值 eg1:var obj = {a:1,b:'gy'} Object.values(obj) //…
关于Object.keys()和Object.values()的使用 1. 关于Object.keys() 1) 处理对象,返回可枚举的所有可枚举属性的字符串数组 let person ={ name:'张三',age:25,address:'深圳' } Object.keys(person) // ['name', 'age', 'address'] Object.keys(person).forEach(key => { console.log(key) //name, age, addre…
ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以理解为:是否可枚举. 然后根据具体的上下文环境的不同,我们又可以将属性分为:原型属性和实例属性.原型属性是定义在对象的原型(prototype)中的属性,而实例属性一方面来自己构造函数中,然后就是构造函数实例化后添加的新属性. 本文主要介绍JavaScript中获取对象属性常用到的三种方法的区别和适…
用途 Object.keys 定义:返回一个对象可枚举属性的字符串数组: Object.getOwnPropertyNames 定义:返回一个对象可枚举.不可枚举属性的名称: 属性的可枚举性.不可枚举性 定义:可枚举属性是指那些内部 “可枚举” 标志设置为 true 的属性,对于通过直接的赋值和属性初始化的属性,该标识值默认为即为 true,对于通过 Object.defineProperty 等定义的属性,该标识值默认为 false. 例子 var obj = { "prop1":…
ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以理解为:是否可枚举.然后根据具体的上下文环境的不同,我们又可以将属性分为:原型属性和实例属性.原型属性是定义在对象的原型(prototype)中的属性,而实例属性一方面来自己构造函数中,然后就是构造函数实例化后添加的新属性. 本文主要介绍JavaScript中获取对象属性常用到的三种方法的区别和适用…
for..in循环 使用for..in循环时,返回的是所有能够通过对象访问的.可枚举的属性,既包括存在于实例中的属性,也包括存在于原型中的实例.这里需要注意的是使用for-in返回的属性因各个浏览器厂商遵循的标准不一致导致对象属性遍历的顺序有可能不是当初构建时的顺序. 虽然for..in主要用于遍历对象的属性,但同样也可以用来遍历数组元素. var arr = ['a', 'b', 'c', 'd']; // 使用for..in for (var i in arr) { console.log(…