微信扫一扫打赏支持

js参考---构造函数修改

js参考---构造函数修改

一、总结

一句话总结:

解决构造函数中方法重复创建多次可以把方法放在全局中,但是这样会污染全局变量以及不安全,所以 可以将方法添加的原型中

 

 

二、构造函数修改

博客对应课程的视频位置:

 

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             /*
 8              * 创建一个Person构造函数
 9              *     - 在Person构造函数中,为每一个对象都添加了一个sayName方法,
10              *         目前我们的方法是在构造函数内部创建的,
11              *             也就是构造函数每执行一次就会创建一个新的sayName方法
12              *         也是所有实例的sayName都是唯一的。
13              *         这样就导致了构造函数执行一次就会创建一个新的方法,
14              *             执行10000次就会创建10000个新的方法,而10000个方法都是一摸一样的
15              *             这是完全没有必要,完全可以使所有的对象共享同一个方法
16              */
17             function Person(name , age , gender){
18                 this.name = name;
19                 this.age = age;
20                 this.gender = gender;
21                 //向对象中添加一个方法
22                 //this.sayName = fun;
23             }
24             
25             //将sayName方法在全局作用域中定义
26             /*
27              * 将函数定义在全局作用域,污染了全局作用域的命名空间
28              *     而且定义在全局作用域中也很不安全
29              */
30             /*function fun(){
31                 alert("Hello大家好,我是:"+this.name);
32             };*/
33             //向原型中添加sayName方法
34             Person.prototype.sayName = function(){
35                 alert("Hello大家好,我是:"+this.name);
36             };
37             
38             //创建一个Person的实例
39             var per = new Person("孙悟空",18,"");
40             var per2 = new Person("猪八戒",28,"");
41             per.sayName();
42             per2.sayName();
43             
44             //console.log(per.sayName == per2.sayName);
45             
46             
47         </script>
48     </head>
49     <body>
50     </body>
51 </html>

 

 

 
posted @ 2020-03-07 05:21  范仁义  阅读(579)  评论(0)    收藏  举报