前不久,一朋友求助,让我给解释一波Object.keys(), Object.getOwnPropertyNames(), for in的区别,面试中好几次呗问了.所以,抽了点时间看了看,大概把我看的过程中做的demo记录一下. 看了网上一些关于介绍Object.keys(), Object.getOwnPropertyNames(), for in, Object.getOwnPropertySymbol()的区别,都介绍得不是很详细,不容易理解,今天抽空来说说这三者的区别. 废话不多说,直接…
1.结论 for in遍历对象所有可枚举属性 包括原型链上的属性 Object.keys遍历对象所有可枚举属性 不包括原型链上的属性 hasOwnProperty 检查对象是否包含属性名,无法检查原型链上是否具有此属性名 2.示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport…
1 : Object.keys(obj) 返回给定对象的所有可枚举属性的字符串数组 例子1: var arr = [1, 2, 6, 20, 1]; console.log(Object.keys(arr), "arr")//["0", "1", "2", "3", "4"] "arr" 返回的数组元素的下标集合: 例子2: var obj = { "nam…
(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) //…
ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以理解为:是否可枚举. 然后根据具体的上下文环境的不同,我们又可以将属性分为:原型属性和实例属性.原型属性是定义在对象的原型(prototype)中的属性,而实例属性一方面来自己构造函数中,然后就是构造函数实例化后添加的新属性. 本文主要介绍JavaScript中获取对象属性常用到的三种方法的区别和适…
ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以理解为:是否可枚举.然后根据具体的上下文环境的不同,我们又可以将属性分为:原型属性和实例属性.原型属性是定义在对象的原型(prototype)中的属性,而实例属性一方面来自己构造函数中,然后就是构造函数实例化后添加的新属性. 本文主要介绍JavaScript中获取对象属性常用到的三种方法的区别和适用…
用途 Object.keys 定义:返回一个对象可枚举属性的字符串数组: Object.getOwnPropertyNames 定义:返回一个对象可枚举.不可枚举属性的名称: 属性的可枚举性.不可枚举性 定义:可枚举属性是指那些内部 “可枚举” 标志设置为 true 的属性,对于通过直接的赋值和属性初始化的属性,该标识值默认为即为 true,对于通过 Object.defineProperty 等定义的属性,该标识值默认为 false. 例子 var obj = { "prop1":…
for..in循环 使用for..in循环时,返回的是所有能够通过对象访问的.可枚举的属性,既包括存在于实例中的属性,也包括存在于原型中的实例.这里需要注意的是使用for-in返回的属性因各个浏览器厂商遵循的标准不一致导致对象属性遍历的顺序有可能不是当初构建时的顺序. 虽然for..in主要用于遍历对象的属性,但同样也可以用来遍历数组元素. var arr = ['a', 'b', 'c', 'd']; // 使用for..in for (var i in arr) { console.log(…
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.getOwnPropertyNames(object); Object.keys(object); 参数: object,如果不是object类型,则引发TypeError异常. 例子: 'use strict'; (function(){ if(!Object.getOwnPropertyNames){ console.log('浏览器不支持getOwnPropertyNames'); return; } //人类的…