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>