<script>
/**
* 通过构造函数方式创建和基于工厂的创建类似,
* 最大的区别就是函数的名称就是类的名称,按照java的约定,第一个字母应该大写。
* 使用构造函数创建时,在函数内部是通过this关键字来完成属性的定义。
*/
function Person (name, age) {
this.name = name;
this.age = age;
this.say = function () {
alert(this.name + ", " + this.age);
}
}
/**
* 通过new Person来创建对象
*/
var p1 = new Person("Jack", 34);
var p2 = new Person("Ann", 31);
p1.say();
p2.say();
/**
* 使用构造函数的方式可以通过以下方式检测对象的类型
*/
alert(p1 instanceof Person);
/**
* 使用构造函数创建所带来的第一个问题就是每一个对象中都会存在一个方法的拷贝,
* 如果对象的行为有很多的话,空间的占用率就会大大增加。可以将函数放到全局变量中定义,
* 这样子可以让类中的行为指向同一个函数
*/
alert(p1.say == p2.say);
</script>
/** * 这里指向同一个全局函数say(), */ function Person (name, age) { this.name = name; this.age = age; this.say = say; } function say() { alert(this.name + ", " + this.age); } var p1 = new Person("Jack", 34); var p2 = new Person("Ann", 31); p1.say(); p2.say(); alert(p1.say == p2.say);