带不带protype的区别

时间:2021-08-13 15:50:16

总结写在前面:

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

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

html代码:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="show.js"></script>
</head>
<body>
<script src="main.js"></script>
</body>
</html>

protype:

show.js代码:

 window.meng = window.meng || {};
(function () { function Show(name) {
this._name=name;
}
Object.defineProperty(Show.prototype,"name",{
get:function () {
return this._name;
}
});
Show.prototype.showCloth=function () {
console.log(this.name+"穿着皮大衣");
}; meng.Show=Show; })();

main.js代码:

 (function () {

     var per=new meng.Show("meng");
per.showCloth(); })();

效果:

  输出meng穿着皮大衣。

no protype:

show.js代码:

 window.meng = window.meng || {};
(function () { function Show(name) {
this._name=name;
}
Show.showName=function () {
console.log("静态方法");
}; meng.Show=Show; })();

main.js代码:

 (function () {

     // var per=new meng.Show("meng");
// per.showCloth(); meng.Show.showName();
})();

效果:

输出:静态方法。

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

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

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

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