带不带protype的区别

总结写在前面:

  ①:带有protype:表示类的扩展,必须new后才能使用。

  ②:不带protype:属于静态方法,直接调用即可。

 

html代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script src="show.js"></script>
 7 </head>
 8 <body>
 9 <script src="main.js"></script>
10 </body>
11 </html>

protype:

show.js代码:

 1 window.meng = window.meng || {};
 2 (function () {
 3 
 4     function Show(name) {
 5         this._name=name;
 6     }
 7     Object.defineProperty(Show.prototype,"name",{
 8         get:function () {
 9             return this._name;
10         }
11     });
12     Show.prototype.showCloth=function () {
13       console.log(this.name+"穿着皮大衣");  
14     };
15 
16     meng.Show=Show;
17 
18 
19 })();

main.js代码:

1 (function () {
2    
3     var per=new meng.Show("meng");
4     per.showCloth();
5    
6 })();

效果:

  输出meng穿着皮大衣。

 

no protype:

show.js代码:

 1 window.meng = window.meng || {};
 2 (function () {
 3 
 4     function Show(name) {
 5         this._name=name;
 6     }
 7     Show.showName=function () {
 8       console.log("静态方法");
 9     };
10     
11     meng.Show=Show;
12 
13 
14 })();

main.js代码:

1 (function () {
2 
3     // var per=new meng.Show("meng");
4     // per.showCloth();
5 
6     meng.Show.showName();
7 })();

效果:

  输出:静态方法。

 

自己的认知:带有protype的扩展方法在js里面举足轻重,必须学会,而又常用。

      不带protype的静态方法,不喜欢用,感觉不符合面向对象的观念。

        但有时候用用也未尝不可。各有千秋吧。

        有某些特殊时候用了会有奇效。都记住吧。

posted @ 2016-08-31 19:29  晨落梦公子  阅读(818)  评论(0编辑  收藏  举报