/Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象。
这个对象的所有属性和方法,都会被构造函数的实例继承。/
function person(name,age){
this.name = name;
this.age = age;
}
person.prototype.eat = function() {
console.log("eat a shit!");
}
person.prototype.HAND_NUM = 2;
var p1 = new person("a",10);
var p2 = new person("b",5);
//如果实例(p1)包含了构造函数原型(person.prototype)的方法和属性,那就返回true
console.log(person.prototype.isPrototypeOf(p1));//true
//name是person自己构造的,属于自己
console.log(p1.hasOwnProperty("name"));//true
//HAND_NUM是在person.prototype上面定义的,不属于person自己的
console.log(p1.hasOwnProperty("HAND_NUM"));//false
//in 不管是对象本身(this)的属性,还是原型(prototype)的属性,只要存在,都为ture
console.log("age" in p1);//true
console.log("HAND_NUM" in p1);//true
//遍历实例对象中的属性
for(var prop in p1){
console.log(p1[prop]);
}
网友评论