首页 > 代码库 > 带不带protype的区别

带不带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的静态方法,不喜欢用,感觉不符合面向对象的观念。

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

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

带不带protype的区别