<script>
function Person() {
}
Person.prototype.name = "宏斌";
Person.prototype.age = 21;
Person.prototype.job = "students";
Person.prototype.sayHello = function () {
console.log("Hello "+this.name)
};
var person1 = new Person();
person1.job = "software engineer";
person1.sex = "body";
for (var a in person1){
console.log(a);
//job
//sex
//name
//age
//sayHello
}
//for in 会返回所有能够通过对象访问的,可枚举的(enumerated)属性,包括实例中的也包括原型中的属性。屏蔽了原型中不可枚举的属性(即[[Enumerable]] : false的属性)的实例属性也会被for in返回,因为根据规定,所有开发人员定义的属性都是可枚举的--IE8即更早除外md..
var personProperty = Object.keys(person1);//实例上的可枚举属性,不含原型上的
console.log(personProperty);//["job", "sex"]
console.log(Object.keys(Person.prototype));// ["name", "age", "job", "sayHello"]
//Object.getOwnPrototypeNames()该方法用来获取所有的实例属性,不论是否可枚举
var keys = Object.getOwnPropertyNames(Person.prototype);
console.log(keys);//["constructor", "name", "age", "job", "sayHello"]
//Object.keys() 和 Object.getOwnProttypeNames() 两种方法都可以代替for in循环使用
</script>
for-in循环和替代的两种方法
猜你喜欢
转载自blog.csdn.net/printf_hello/article/details/104249086
今日推荐
周排行