3.Object.keys() 取得对象中所有可枚举的属性

 Object.keys() 取得对象中所有可枚举的属性

function Person(){

}Person.prototype.name="summer";Person.prototype.age=20;Person.prototype.job="enginner";Person.prototype.sayName=function(){    console.log(this.name);}

var keys=Object.keys(Person.prototype);console.log(keys); // ["name", "age", "job", "sayName"]

var p1=new Person();p1.name="Bob";p1.age=27;var P1key=Object.keys(p1);console.log(P1key); // ["name", "age"]

// 变量keys保存一个数组,数组中是字符串 "name", "age", "job", "sayName"// 如果通过Person的实例p1,则数组中只有字符串 "name", "age"。

//如果想得到所有实例属性,无论是否可以枚举,可以使用 Object.getOwnPropertyNames()

var keys2=Object.getOwnPropertyNames(Person.prototype);console.log(keys2); // ["constructor", "name", "age", "job", "sayName"]
//Object.keys,Object.getOwnPropertyNames都可以用来代替for-in循环,// 支持的浏览器为IE9+,Firfox4+,Safari5+,Opera12+和Chrome
 
时间: 2024-08-11 09:52:10

3.Object.keys() 取得对象中所有可枚举的属性的相关文章

[Effective JavaScript 笔记]第47条:绝不要在Object.prototype中增加可枚举的属性

之前的几条都不断地重复着for...in循环,它便利好用,但又容易被原型污染.for...in循环最常见的用法是枚举字典中的元素.这里就是从侧面提出不要在共享的Object.prototype中增加可枚举的属性.这就导致,我们在开发的时候,不能在Object.prototype中添加有用的方法.如,我们想增加一个产生对象属性名数组的allKeys方法将会怎么样? Object.prototype.allKeys=function(){ var res=[]; for(var key in thi

Object.keys() 遍历对象

Object.keys()方法的运用与数组遍历 Object.keys()用于获得由对象属性名组成的数组,可与数组遍历相结合使用,用起来效果杠杠滴.数组遍历可以用for()或forEach()来实现,forEach()方法是ECMAScript5定义的遍历数组的一个新方法,按照索引的顺序挨个传递给定义的函数:接下来就Object.keys()分别结合for()和forEach()使用进行运用,用console.log输出到控制台,代码如下: 1.for() //创建对象var person =

Object.keys方法详解

一.官方解释 Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 .如果对象的键-值都不可枚举,那么将返回由键组成的数组. 二.语法 Object.keys(obj)参数:要返回其枚举自身属性的对象返回值:一个表示给定对象的所有可枚举属性的字符串数组 三.处理对象,返回可枚举的属性数组 <!DOCTYPE html> <html> <head> <met

对象是否拥有某个属性,in和for in以及object.hasOwnProperty(&#39;&#215;&#215;&#215;&#39;)的异同,以及Object.defineProperty(),Object.keys(),Object.getOwnPropertyNames()的用法

1.在某个对象是否拥有某个属性,判断的方法有很多,常用的方法就是object.hasOwnProperty('×××'),这个方法是不包括对象原型链上的方法的,举个例子: var obj = { name:'fei' } console.log(obj.hasOwnProperty('name'))//true console.log(obj.hasOwnProperty('toString'))//false 在这个例子中,obj对象存在的name属性的时候,调用这个方法才是返回true,我们

in、Object.keys

for in 会遍历对象.数组以及该对象原型链上可以枚举的属性 返回的结果都是String类型 在某些情况下,遍历数组的顺序可能是随机的 1234567891011121314 Array.prototype.getLength = function() { return this.length;};var arr = ['a', 'b', 'c'];arr.name = 'June';Object.defineProperty(arr, 'age', { enumerable: true, v

python基础19 -------面向对象终结篇(介绍python对象中各种内置命令)

一.isinstance()和issubclass()命令 1.isinstance(对象,类型) 用来判定该对象是不是此类型或者说是该对象是不是此类的对象,返回结果为True和False,如图所示. 注:在python3中类和类型做了统一,都叫做类. 2.issubclass(对象(子类),对象(父类)) 用来判定该对象是不是该父类的子类,返回的结果为True或False,如图所示. 二.反射 1.什么是反射? 反射就相当于程序能检测,访问和修改他本身状态和行为的一种能力,相当于自省. 2.p

for in 与 Object.keys 与 hasOwnProperty区别

1.结论 for in遍历对象所有可枚举属性 包括原型链上的属性 Object.keys遍历对象所有可枚举属性 不包括原型链上的属性 hasOwnProperty 检查对象是否包含属性名,无法检查原型链上是否具有此属性名 2.示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport

Object.keys(),Object.values(),Object.entries()

1. (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

ES6系列_10之Symbol在对象中的作用

在ES5中 对象属性名都是字符串,这容易造成属性名的冲突,比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突,于是 ES6 引入了Symbol.Symbol是一种新的原始数据类型,表示独一无二的值.它是继undefined.null.布尔值(Boolean).字符串(String).数值(Number).对象(Object)六种数据类型之后的第七种数据类型.凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与