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

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

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

时间: 2024-08-10 21:10:39

带不带protype的区别的相关文章

Java杂谈之StringBuffer----兼带String,StringBuffer,StringBuilder的区别

在Java中,用到最多的当属String类型的数据了 而这一点就要涉及String , StringBuffer , StringBuilder这三大类 下面主要来比较一下String和StringBuffer的区别,因为StringBuffer和StringBuilder 太相似,所以就不拿来比较了. 提及一下,StringBuffer和StringBuilder的区别 从安全性来说,StringBuffer更安全,StringBuffer主打线程安全 从执行效率来说,StringBuilde

带缓冲I/O 和不带缓冲I/O的区别与联系

首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用.系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘.因此所谓的不带缓冲的I/O是指进程不提供缓冲功能(但内核还是提供缓冲的).每调用一次write或read函数,直接系统调用. 而带缓冲的I/O是指进程对输入输出流进行了改进,提供了一个流缓冲,当用fw

用cp命令拷贝文件,源目录后带不带斜杠的区别

当我还是Linux超级傻白的时候,需要拷贝一个很大的数据集,然后再拷贝源文件夹的后面跟了一个前倾斜杠,然后就发现居然拷贝的是整个文件夹里的东西,而不是文件夹本身.事儿倒是不大,我重新建一个文件夹,把这些东西挪进去就行了.后来,等我记住这一招后,发现有的时候居然也不是这样.于是,做做实验,干脆搞搞清楚. 两个文件夹,各自内容如下: 使用命令cp –R dir_src/ dir_target后,结果如下: 重做一遍,使用cp –R dir_src dir_target后,结果如下: 于是我就记住了这

Java 中带参带返回值方法的使用

如果方法既包含参数,又带有返回值,称为带参带返回值的方法. 例: 实现功能:将考试成绩排序并输出,返回成绩的个数 实现思路: 1. 定义一个包含整型数组参数的方法,用来传入成绩数组 2. 在方法体中使用 Arrays.sort( ) 方法对成绩数组进行排序,然后使用 Arrays.toString( ) 方法将数组转换为字符串并输出,最后使用 return 返回数组中元素的个数. 3. 调用方法时需要先创建对象,然后再调用.调用时为其传入成绩数组,并获取方法的返回值,保存在变量中,最后输出成绩的

定义一个带参带返回值的方法,实现输出随机数数组

public class mains { public static void main(String[] args) { // 创建对象,对象名为hello mains hello = new mains(); // 调用方法并将返回值保存在变量中 int[] nums = hello.getArray(8); // 将数组转换为字符串并输出 System.out.println(Arrays.toString(nums)); } /* * 功能:创建指定长度的int型数组,并生成100以内随

TP框架中生成带背景带文字的二维码

首先下载一个phpqrcode的包放到/vendor目录下 链接:https://pan.baidu.com/s/18jV9DypYB_PHDhD6C0iedQ 提取码:qxuo 如果只是单纯生成二维码那么下面代码即可: vendor('phpqrcode.phpqrcode');//引入 $url='你要生成的东西:文字.数字.链接等'; $errorCorrectionLevel = "Q"; // 容错级别:L.M.Q.H $matrixPointSize = "3.8

网站的域名带www的和不带www的有什么区别呀

国内用户习惯用www,不过默认的不带www的域名要好过带www的,带Www的是二级域名,不带的是顶级域名,默认的在搜索引擎中得权重会比较高 区别就在于一个带www一个不带www 其他都一样.www的域名是不带www的子域名 原文地址:https://www.cnblogs.com/lxwphp/p/9441012.html

带参sql$和#的区别

主要区别就是#带双引号,$不带 例如:#{id}代表'id',${id}代表id 下面是Mybatis @Select注解方式的sql @Select("select id,name from user where id=#{id}") public User getUser(@Param("id")long id); @Select("select id,name from user where id=${id}")public User ge

nodejs npm insttall 带不带-g这个参数的区别

-g 中的g是global的意思所以带-g这个参数是全局安装,不带-g这个参数是本地安装. 在windows系统中全局安装的目录在:C:\Users\linsenq\AppData\Roaming\npm 而本地安装的目录在:D:\Program Files\nodejs\node_modules\npm这个目录下有一个文件叫package.json. 首先你在cmd中必须把目录切换至D:\Program Files\nodejs\node_modules\npm这个目录下,或者会报no suc