构造函数的修改

<script>
/*
*创建一个person的构造函数
*/
function Person(name , age , gender) {
this.name = name;
this.age = age;
this.gender = gender;
//向对象中添加一个方法
this.sayName = fun;

}
//创建一个Person的实例
var per = new Person("孙悟空",18,"男");
/*
*在person的构造函数中,为每一个对象都添加了一个sayName的方法,
* 目前我们的方法是在构造函数中创建的
* 也就是说构造函数每执行一次就会创建一个新的sayName的方法
* 也是所有实例的sayName都是唯一的
* 这样就导致了构造函数执行一次就会创建一个新的方法。
* 执行10000就会会创建10000个新的方法,而10000个方法都是一模一样的,没必要,可以使所有的对象共享一个方法
*/
/* per.sayName();
per2.sayName();
console.log(per.sayName == per2.sayName);//显示false 因为构造函数每执行一次就创建一个新的
*/
//将sayName方法在全局作用域中定义
/*
*将函数定义在全局作用域当中,污染了全局作用域的命名空间
* 而且定义在全局作用域中也很不安全----使用原型对象
*/
function fun(){
alert("Hello大家好,我是:"+this.name);
};//可能全局中也有定义一个fun的那么本个fun就被其他的给覆盖掉了-------所以使用原型封装,使用的时候进行调用就可以了

</script>
posted @ 2022-05-15 20:32  LiLime  阅读(53)  评论(0)    收藏  举报