将对象的公有属性,统一添加到构造函数的原型对象中,这样不用分别为每一个对象添加/创建函数,也不影响全局作用域,就可以为每个对象添加属性。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
function Person(name,age,gender){
this.name = name;
this.age = age;
this.gender = gender;
}
//向函数原型对象中添加函数/属性,每个实例都可以访问
Person.prototype.sayName = function(){
alert(this.name);
}
Person.prototype.name = "我是原型中的名字";
var per = new Person('fang',18,'女');
var per2 = new Person('guang',18,'男');
per.sayName();
per2.sayName();
//使用in检查对象中是否含有某个属性时,如果对象中没有但是原型中有,也会返回true;
console.log("name" in per);
//使用对象的hasOwnProperty检查对象自身是否含有属性值
console.log(per.hasOwnProperty("age"));
console.log(per.__proto__.__proto__.hasOwnProperty("hasOwnProperty"));
console.log(per.__proto__.__proto__);//object
console.log(per.__proto__.__proto__.__proto__);//object
</script>
</body>
</html>