<!DOCTYPE html>
<html>
<head>
<title>简单原型</title>
</head>
<body>
<script type="text/javascript">
// 简单原型
/*
function Person() {
}
Person.prototype = {
//constructor : Person, // 必须得表示原型对象的构造器
name : 'z3',
say : function() {
alert("我是原型的方法");
}
};
var p1 = new Person();
//alert(p1.name);
//p1.say();
for (attr in p1) {
alert(attr);
} // construtor name say
// Object.defineProperty(); 给原型对象重新设置构造器的方法 ES5
// 三个参数。1 更改的对象 2 属性名称 3 optain
Object.defineProperty(Person.prototype,'construtor',{
enumerable : false,
value : Person
});
var p1 = new Person();
for(attr in p1) {
alert(attr);
} // name say
*/
// 原型的动态特性 注意:简单原型和创建实例对象的先后顺序
function Person() {
}
var p1 = new Person()
// Person.prototype.name = 'z3';
// alert(p1.name);// z3
Person.prototype = {
construtor : Person,
name : "z3",
say : function() {
"我是原型的方法";
}
}
alert(p1.name);// undefined
// 当使用简单原型的时候,首先将对象的原型重新指向一个Object,因此此时的p1.prototype为空
// 所以使用简单原型的时候。实例对象的创建必须在创建简单原型之后
var p2 = new Person();
alert(p2.name);// z3
</script>
</body>
</html>
<html>
<head>
<title>简单原型</title>
</head>
<body>
<script type="text/javascript">
// 简单原型
/*
function Person() {
}
Person.prototype = {
//constructor : Person, // 必须得表示原型对象的构造器
name : 'z3',
say : function() {
alert("我是原型的方法");
}
};
var p1 = new Person();
//alert(p1.name);
//p1.say();
for (attr in p1) {
alert(attr);
} // construtor name say
// Object.defineProperty(); 给原型对象重新设置构造器的方法 ES5
// 三个参数。1 更改的对象 2 属性名称 3 optain
Object.defineProperty(Person.prototype,'construtor',{
enumerable : false,
value : Person
});
var p1 = new Person();
for(attr in p1) {
alert(attr);
} // name say
*/
// 原型的动态特性 注意:简单原型和创建实例对象的先后顺序
function Person() {
}
var p1 = new Person()
// Person.prototype.name = 'z3';
// alert(p1.name);// z3
Person.prototype = {
construtor : Person,
name : "z3",
say : function() {
"我是原型的方法";
}
}
alert(p1.name);// undefined
// 当使用简单原型的时候,首先将对象的原型重新指向一个Object,因此此时的p1.prototype为空
// 所以使用简单原型的时候。实例对象的创建必须在创建简单原型之后
var p2 = new Person();
alert(p2.name);// z3
</script>
</body>
</html>