微信扫一扫打赏支持

Javascript进阶课程---3、构造函数创建对象的不足

Javascript进阶课程---3、构造函数创建对象的不足

一、总结

一句话总结:

使用构造函数创建对象的不足就是会浪费资源,因为我们每次使用构造函数创建对象的时候,构造函数中的方法(比如say方法)都会被创建,如果我们要创建10000个对象,那么say方法也就会创建10000次,而每个say方法都是一样的,所以这样就造成了资源的浪费

 

1、解决构造函数创建对象造成的资源浪费问题 的思路?

让构造函数中的方法共享,比如说这里让这个say方法来共享

 

2、如何解决构造函数创建对象造成的资源浪费问题(如何让构造函数中的方法共享)?

1、方法一的话可以把构造函数中的方法放到全局,这样虽然解决了资源浪费的问题,但是会污染全局的方法,所以不推荐
2、方法二的话就是用原型

 

 

 

二、构造函数创建对象的不足

博客对应课程的视频位置:3、构造函数创建对象的不足
https://www.fanrenyi.com/video/21/197

 

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>构造函数创建对象的不足</title>
 6 </head>
 7 <body>
 8 <!--
 9 不足:浪费资源
10 我们使用构造函数来创建对象的过程中,构造函数里面的方法(比如说这里的say方法)也会被创建,
11 所以如果我们创建10000个对象,那么这里的say方法也被创建了10000次,而每个say方法都是一样的,
12 所以这样就造成了资源的浪费
13 
14 思路:
15 让构造函数中的方法共享,比如说这里 让这个say方法来共享
16 
17 具体如何达到思路里面说到的目的:
18 方法一:就是把构造函数中的方法放到全局,比如这里的say方法
19 有一个非常致命的缺陷:会污染全局的方法
20 
21 方法二:用原型
22 
23 
24 -->
25 <script>
26     function say() {
27         console.log('我是天底下最靓的仔,我是'+this.name+',我今年'+this.age+'岁。');
28     }
29     function People(name,age) {
30         this.name=name;
31         this.age=age;
32         // this.say=function () {
33         //     console.log('我是天底下最靓的仔,我是'+this.name+',我今年'+this.age+'岁。');
34         // };
35         this.say=say;
36     }
37     var zhuBaJie=new People('猪八戒',4);
38     console.log(zhuBaJie);
39     zhuBaJie.say();
40     var tangSen=new People('唐僧',15);
41     console.log(tangSen);
42     tangSen.say();
43 </script>
44 </body>
45 </html>

 

 
posted @ 2020-04-07 16:34  范仁义  阅读(145)  评论(0编辑  收藏  举报