<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js对象的创建5 基于原型的方式</title>
<meta name="author" content="ASUS" />
<!-- Date: 2014-11-13 -->
<script type="text/javascript">
/*
*基于原型的创建方式可以有效的完成封装,但是依然有缺陷
* 1 无法通过构造函数来设置属性的值
* 2 当属性中有引用类型的变量时,可能存在变量值重复
*/
function Person(){
}
Person.prototype = {
name:"gui",
age:22,
friends:["aa","bb"],
sayHello:function(){
alert(this.name+","+this.age+"["+this.friends+"]");
}
}
var p1 = new Person();
p1.name="newgui";
var p2 = new Person();
//alert(p1.sayHello==p2.sayHello);//true
//会在p1的原型中找到friends并为它添加cc
p1.friends.push("cc");
p1.sayHello(); //[aa,bb,cc]
//此时 原型中就增加了cc 这就是原型带来的第二个问题
p2.sayHello();//[aa,bb,cc]
</script>
</head>
<body>
</body>
</html>
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js对象的创建5 基于原型的方式</title>
<meta name="author" content="ASUS" />
<!-- Date: 2014-11-13 -->
<script type="text/javascript">
/*
*基于原型的创建方式可以有效的完成封装,但是依然有缺陷
* 1 无法通过构造函数来设置属性的值
* 2 当属性中有引用类型的变量时,可能存在变量值重复
*/
function Person(){
}
Person.prototype = {
name:"gui",
age:22,
friends:["aa","bb"],
sayHello:function(){
alert(this.name+","+this.age+"["+this.friends+"]");
}
}
var p1 = new Person();
p1.name="newgui";
var p2 = new Person();
//alert(p1.sayHello==p2.sayHello);//true
//会在p1的原型中找到friends并为它添加cc
p1.friends.push("cc");
p1.sayHello(); //[aa,bb,cc]
//此时 原型中就增加了cc 这就是原型带来的第二个问题
p2.sayHello();//[aa,bb,cc]
</script>
</head>
<body>
</body>
</html>