<!DOCTYPE html>
<html>
<head>
<title>原型对象的常用开发模式</title>
</head>
<body>
<script type="text/javascript">
/*
function Person() {
// body...
}
Person.prototype = {
constructor : Person,
name : 'z3',
age : 20,
friends : ['w5','z6']
}
var p1 = new Person();
var p2 = new Person();
p1.friends.push('z7');
alert(p1.friends);// w5,z6,z7
alert(p2.friends);// w5,z6,z7
*/
// 原型的 属性和方法被所有对象所共享
// 所以,组合使用原型和构造函数式定义一个类
// 1 动态原生模式,让你的代码都封装到一起
/* function Person(name, age)
{
this.name = name;
this.age = age;
if (typeof sayName != 'function') {
Person.prototype.sayName = function() {
alert(this.name);
}
}
}
var p1 = new Person('z3',20); // 初始化sayName
var p2 = new Person('w5',25); // 已存在sayName,不需要初始化
p1.sayName(); // z3
p2.sayName(); // w5
*/
// 2 稳妥构造函数式,durable object(稳妥对象), 将对象放在非常安全的环境中
// 特点: 没有公共属性,不能使用this对象
function Person(name) {
// 创建一个可以返回的对象
var obj = new Object();
// 可以定义一个私有的变量和方法
var name = name;
obj.sayName = function() {
alert(name);
}
return obj;
}
var p1 = new Person('z3');
alert(p1.name); // undefiend
p1.sayName(); // z3
</script>
</body>
</html>
<html>
<head>
<title>原型对象的常用开发模式</title>
</head>
<body>
<script type="text/javascript">
/*
function Person() {
// body...
}
Person.prototype = {
constructor : Person,
name : 'z3',
age : 20,
friends : ['w5','z6']
}
var p1 = new Person();
var p2 = new Person();
p1.friends.push('z7');
alert(p1.friends);// w5,z6,z7
alert(p2.friends);// w5,z6,z7
*/
// 原型的 属性和方法被所有对象所共享
// 所以,组合使用原型和构造函数式定义一个类
// 1 动态原生模式,让你的代码都封装到一起
/* function Person(name, age)
{
this.name = name;
this.age = age;
if (typeof sayName != 'function') {
Person.prototype.sayName = function() {
alert(this.name);
}
}
}
var p1 = new Person('z3',20); // 初始化sayName
var p2 = new Person('w5',25); // 已存在sayName,不需要初始化
p1.sayName(); // z3
p2.sayName(); // w5
*/
// 2 稳妥构造函数式,durable object(稳妥对象), 将对象放在非常安全的环境中
// 特点: 没有公共属性,不能使用this对象
function Person(name) {
// 创建一个可以返回的对象
var obj = new Object();
// 可以定义一个私有的变量和方法
var name = name;
obj.sayName = function() {
alert(name);
}
return obj;
}
var p1 = new Person('z3');
alert(p1.name); // undefiend
p1.sayName(); // z3
</script>
</body>
</html>