<script type="text/javascript">
/* 1. 为函数增加方法 */
function Person(name,age){
this.name = name,
this.age = age;
/* 在函数内部定义方法 */
this.info = function(){
alert("name : " + name + "/n" + "age : " + age );
}
}
var p1 = new Person('a','b');
p1.info();
/*[提倡] 动态为函数怎家方法(或属性) */
Person.prototype.walk = function(){
alert(this.name + " hi !");
}
var p2 = new Person('a','b');
p2.walk();
p1.walk();
/* 2. 闭包[存在隐患] */
function Person(sex){
/* sex 是个局部变量,本应该在该函数结束后立即消失 */
var sex = sex;
this.info = function (){
return sex;
}
}
var p = new Person('x');
var sex = p.info();
alert(sex);
</script>
1. 在函数内部定义方法的缺点
a. 性能低下,每次创建Person实例时,程序依次向下执行,每次都会创建一个info函数,当创建多个Person实例时,很有可能造成内存泄露,从而引起性能下降。
b. info函数中的局部变量产生闭包,闭包会扩大局部变量的作用域,使得局部变量一直存活到函数之外的地方。