首页 > 试题广场 >

使用 for in 循环数组中的元素会枚举原型链上的所有属性

[填空题]
使用 for in 循环数组中的元素会枚举原型链上的所有属性,过滤这些属性的方式是使用 1 函数
醉了
发表于 2015-08-21 15:05:55 回复(19)
for in可以获取object的所有属性,包括自定义属性以及原型链属性。
for(var attr in object){
  console.log(attr+":"object[attr]);
}  hasOwnProperty()只能获取自定义属性,无法获取原型链属性。 “str”.hasOwnProperty("split");//false
String.property.hasOwnProperty("split");//true

发表于 2015-08-26 21:14:31 回复(4)
function Person() {
}

Person.prototype.name="Nicholas";
Person.prototype.age=29;
Person.prototype.sayName=function(){
    alert(this.name);
}

var person1=new Person();
person1.name="Greg";

var person2=new Person();

console.log(person1.hasOwnProperty("name"));//true
console.log(person2.hasOwnProperty("name"));//false

console.log("name" in person1);//true
console.log("name" in person2);//true

for (var prop in person1) {
    console.log(prop);//name   age   sayName
}

function hasPrototypeProperty(object,pro) {//如此可判断存在于原型中的属性
    return (!object.hasOwnProperty(pro))&&(pro in object);
}
console.log(hasPrototypeProperty(person1,"name"));//false
console.log(hasPrototypeProperty(person2,"name"));//true



发表于 2016-03-09 17:23:39 回复(1)
for in循环找出所有的属性,包括实例和原型上的属性,区分一个属性是存在于实例当中还是原型当中就要用到hasOwnProperty

function Person(){
    Person.prototype.name="123";
}
var person=new Person();

person.age=12;

document.write(person.hasOwnProperty("name")) //false  因为name属性实在原型person上而不是在实例上

document.write(Person.hasOwnProperty("name")) //true 因为name在Person原型上

第一次发解析   有什么不对的地方  请指出
编辑于 2016-12-02 11:06:02 回复(2)
hasOwnProperty()
发表于 2016-06-24 12:56:20 回复(0)
我就一个呵呵不说话
发表于 2018-07-13 18:23:26 回复(0)
不管属性在原型还是在实例上,通过for in都可以获取得到,而hasOwnProperty只能获取到实例上的属性。
编辑于 2018-07-05 23:50:13 回复(0)
单词拼错了。。
发表于 2017-08-30 10:30:11 回复(0)
难道不该是getOwnPropertyNames?
发表于 2017-07-10 11:23:40 回复(0)
for in可以获取object的所有属性,包括自定义属性以及原型链属性。 for(var attr in object){   console.log(attr+":"object[attr]); }  hasOwnProperty()只能获取自定义属性,无法获取原型链属性。 “str”.hasOwnProperty("split");//false String.property.hasOwnProperty("split");//true
发表于 2017-06-19 17:08:45 回复(0)
Object.hasOwnProperty x 很强势
发表于 2017-05-18 23:01:06 回复(0)
hasOwnproperty
发表于 2017-04-01 10:56:51 回复(0)
hasOwnProperty
发表于 2017-03-22 23:44:28 回复(0)
for in循环找出所有的属性,包括实例和原型上的属性,区分一个属性是存在于实例当中还是原型当中就要用到hasOwnProperty function Person(){     Person.prototype.name="123"; } var person=new Person(); person.age=12; document.write(person.hasOwnProperty("name")) //false  因为name属性实在原型person上而不是在实例上 document.write(Person.hasOwnProperty("name")) //true 因为name在Person原型上
发表于 2017-03-06 23:05:41 回复(0)
hasOwnProperty
发表于 2016-11-30 15:37:21 回复(0)
hasOwnproperty
发表于 2016-10-22 14:50:44 回复(0)
hasOwnProperty
发表于 2016-08-14 13:36:21 回复(0)
没学过啊。
发表于 2016-01-23 12:12:13 回复(0)

呵呵
发表于 2015-11-28 21:23:24 回复(0)
hasOwnProperty and propertyIsEnumerable
发表于 2015-09-25 18:01:05 回复(0)