JavaScript中的设计模式

目录

1.工厂模式

2.构造函数模式

构造函数中new关键字作用:

3.原型模式

4.组合模式


JavaScript中有四种常见的设计模式 ,目的是为了批量创建对象 为了实现继承。

1.工厂模式

利用工厂模式批量创建对象 
    优点:可以批量创建对象 
    缺点:无法区分种类,创建实例对象都是Object实例,方法冗余

var sayName = function(){console.log(this.name)
};//b1001
function Person(name,age,gender){return {name:name,age:age,gender:gender,sayName:sayName}
}
var p1 = Person('terry',12,'male');
var p2 = Person('larry',18,'female');
console.log(p1,p2);
p1.sayName();
p2.sayName();
console.log(p1.sayName===p2.sayName);function Animal(){return {}
}
var a1 = Animal();
console.log(a1);

 代码运行结果如下:



2.构造函数模式

    优点:可以批量创建对象 可以区分种类 Person{} Animal{}
    缺点:无法解决方法冗余 

var sayName = function(){console.log(this.name)
}
function Person(name,age,gender){// new Object() new Array()this.name = name;this.age = age;this.gender = gender;this.sayName = sayName;
}
var p1 = new Person('terry',12,'male');
var p2 = new Person('larry',18,'female');
console.log(p1,p2);
console.log(p1.sayName===p2.sayName);
p1.sayName();
p2.sayName();function Animal(){}
var a1 = new Animal();
console.log(a1);
构造函数中new关键字作用:

        1.创建一个Person对应的实例 
        2.将this指向实例对象
        3.执行函数体代码
        4.返回实例对象

代码运行结果如下:


3.原型模式

    不单独使用    构造函数不做任何处理将实例所有属性和方法全部写在原型对象中

        优点:可以区分种类 可以批量创建对象 方法不冗余

        缺点:所有实例方法和属性一样

function Person(){};
Person.prototype.name = 'lisi';
Person.prototype.age = 12;
Person.prototype.gender = 'male';
Person.prototype.sayName = function(){console.log(this.name);
};
Person.prototype.firends = [];
var p1 = new Person();
var p2 = new Person();
console.log(p1,p2);
console.log(p1.name,p2.name,p1.sayName(),p2.sayName());
p1.firends.push('tom');
console.log(p1.firends,p2.firends);

代码运行结果如下:
 


4.组合模式

      构造函数模式 + 原型模式
      将实例私有属性和私有方法放在构造函数中
      将实例公共属性和公共方法放在原型对象中

function Person(name,age,gender,weight){// 私有属性this.name = name;this.age = age;this.gender = gender;// 私有方法this.weight = function(){console.log(weight)}
}
// // 公共方法
// Person.prototype.sayName = function(){
//   console.log(this.name);
// }
// // 公共属性
// Person.prototype.type = 'Person实例';
// 简化上述代码
Person.prototype = {// 将构造者改为Person constructor:Person,sayName:function(){console.log(this.name)},type:'Person实例'
};var p1 = new Person('terry',16,'male','40kg');
var p2 = new Person('larry',18,'female','60kg');
p1.sayName();
p2.sayName();
console.log(p1.sayName === p2.sayName,p1.type === p2.type);
console.log(p1.type,p2.type);
p1.weight();
p2.weight();
console.log(p1.weight === p2.weight);
console.log(p1.constructor,p2.constructor);// instanceof 检测实例在不在原型链中 是否是构造函数实例
console.log(p1 instanceof Person);
console.log(p1 instanceof Object);
console.log(p1 instanceof Array);
console.log(Person instanceof Object);function Animal(){};
console.log(Animal instanceof Object);

代码运行结果如下:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html滑动文章标题置顶

position: sticky; 基于用户的滚动位置来定位 首先封装一个组件 例如&#xff1a;AAA组件&#xff08;注意&#xff0c;只能有一层盒子&#xff0c;不能在外面继续包一层div&#xff09; <template><div class"box">{{title}}</div> </templa…

【Nginx】nginx 解决504超时问题

问题发现 最近在做测试&#xff0c;发现基本有所有接口响应时间过长的错误反馈都是504。 分析 nginx访问出现504 Gateway Time-out&#xff0c;一般是由于程序执行时间过长导致响应超时&#xff0c;例如程序需要执行90秒&#xff0c;而nginx最大响应等待时间为30秒&#xff…

酒店品牌纷纷冲击中高端,东呈集团能否“快人一步”?

过去两年酒店行业加速洗牌&#xff0c;“强者恒强”的马太效应正持续凸显。 报告显示&#xff0c;2022年排名前10名的酒店集团分别为锦江国际、华住、首旅如家、格林、东呈集团、尚美数智、亚朵、德胧、逸柏、都市酒店。以上10家酒店集团客房规模在连锁酒店市场占有率为62.36&…

【EI会议征稿】第四届公共管理与智能社会国际学术会议(PMIS 2024)

第四届公共管理与智能社会国际学术会议&#xff08;PMIS 2024) 2024 4th International Conference on Public Management and Intelligent Society 第四届公共管理与智能社会国际学术会议将在2024年3月15-17日在长沙召开。PMIS 2024由中南大学社会计算研究中心、中南大学公共…

根据nginx日志统计页面访问次数

静态页面部署在nginx上&#xff0c;页面只有查看下载功能。 需求是统计每条访问次数和下载次数&#xff0c;根据日志分析写了一个shell脚本&#xff0c;触发脚本后生成一个html可以远程查看统计的数量。 #!/bin/bash # nginx日志文件路径 LOG_FILE"/usr/local/nginx/l…

Python等于号标红怎么办,可能原因

Python等于号标红 在具有错误提示的开发集成环境中&#xff0c;Python程序如果被标红的位置刚好是在“等于号”&#xff0c;而不是在“等于号”左边的变量名称上&#xff0c;也不是右边的值或表达式上&#xff0c;那么可能的原因就是等于号的语法错误&#xff1a; 即在Python…

OpenCV 卷积运算和卷积核

卷积运算和卷积核 图像运算中经常会碰到卷积运算这个讲法, 初看不知道具体含义, 其实非常简单, 工作原理如下: 首先提供一个小的矩阵, 一般是3*3, 或者是 5*5 或者是 7*7, 一般是方形矩阵, 维度为奇数, 这样中心点可以作为锚点, 矩阵中的元素取值多为很小的整数(或正或负或零),…

注册亚马逊美国买家号需要些什么资料?

注册亚马逊美国买家号需要准备邮箱、美国手机号、美国地址及能支付的支付卡。准备好之后进入亚马逊美国站进行点击注册&#xff0c;按照格式填写好之后即可注册成功了。 而如果想要注册大量买家号&#xff0c;可以使用亚马逊鲲鹏系统进行自动化操作&#xff0c;想要自动化更顺畅…

活动回顾 | 数字外贸私享会【上海站】成功举办

11月17日&#xff0c;由箱讯科技主办的数字外贸高端定制私享会【上海站】成功举办&#xff01;本次会议的主题为“新模式、新商机、新政策”&#xff0c;外贸行业的老板、企业家们齐聚一堂&#xff0c;凝聚共识&#xff0c;共话数字外贸的新趋势和新机遇。 近年来&#xff0c;数…

HTML+CSS+ElementUI搭建个人博客页面(纯前端)

网站演示 搭建过程 html部分 首先下载Vue2&#xff0c;ElementUI等插件&#xff0c;放在你的本地。我这里为了运行方便&#xff0c;把代码放在了一个框架里运行。 下载后引入部分 <link rel"stylesheet" href"{{URL::asset(elementui/lib/theme-chalk/ind…

设计师有哪些副业?优漫教育

1、自我推广 设计师有哪些副业&#xff1f;   正所谓&#xff1a;肥水不流外人田&#xff0c;身边朋友需要做海报logo设计什么的,肯定第一个想到的就是你&#xff0c;那么这里无非就两种情况&#xff1a;   一种情况就是朋友拿你当朋友&#xff0c;设计之前会问清相关…

bank conflicts 理解

1、同一个bank下如果有多个threads access 不同的地址&#xff0c;就会出现bank conflicts, 2、如果是多个threads read 同一个bank内的同一个地址&#xff0c;就是broadcast 模式没有bank conflicts&#xff0c;这种情况下带宽利用率较低&#xff0c;因为只用了一个bank资源…

黑马React18: 基础Part II

黑马React: 基础2 Date: November 16, 2023 Sum: 受控表单绑定、获取DOM、组件通信、useEffect、Hook、优化B站评论 受控表单绑定 受控表单绑定 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 准备一个React状态值 const [value, se…

Linux操作系统的Web服务器优点

Linux操作系统的Web服务器优点 Windows&#xff0c;Linux与Unix这3个操作系统是架设Web服务器比较常见的操作系统。Linux的安全性能在这3个操作系统中最高&#xff0c;可以支持多个硬件平台&#xff0c;其网络功能比较强大。总的来说这两大优点是其他操作系统不可替代的&#…

基于C#实现协同推荐 SlopeOne 算法

一、概念 相信大家对如下的 Category 都很熟悉&#xff0c;很多网站都有类似如下的功能&#xff0c;“商品推荐”,"猜你喜欢“&#xff0c;在实体店中我们有导购来为我们服务&#xff0c;在网络上我们需要同样的一种替代物&#xff0c;如果简简单单的在数据库里面去捞&am…

小迪笔记(1)——操作系统文件下载反弹SHELL防火墙绕过

名词解释 POC&#xff1a;验证漏洞存在的代码&#xff1b; EXP&#xff1a;利用漏洞的代码&#xff1b; payload&#xff1a;漏洞利用载荷&#xff0c; shellcode&#xff1a;漏洞代码&#xff0c; webshell&#xff1a;特指网站后门&#xff1b; 木马&#xff1a;强调控制…

rotation matrix reflection matrix

文章目录 1. rotation matrix1.1 结论 2. reflection matrix2.1 结论 1. rotation matrix 图像逆时针旋转 θ \theta θ的矩阵 Q r o t a t e [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] (1) Q_{rotate}\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\c…

洗涤厂污水处理设备厂家工艺流程

诸城市鑫淼环保小编带大家了解一下洗涤厂污水处理设备厂家工艺流程 1.格栅&#xff1a;格栅是初级处理中常用的设备&#xff0c;用于拦截较大的杂质和固体颗粒。我们的格栅采用优质不锈钢制造&#xff0c;结构坚固耐用&#xff0c;可有效防止堵塞和腐蚀。 2.活性污泥池&#xf…

数据湖的概念、发展背景和价值

数据湖是一个集中化的存储系统&#xff0c;旨在以低成本、大容量的方式&#xff0c;无需预先对数据进行结构化处理&#xff0c;存储各种结构化和非结构化数据。以下是数据湖概念、发展背景和价值的详细介绍。 数据湖概念 数据湖的概念源自于对传统数据仓库的补充。传统数据仓…

Ajax之基本语法

【一】前后端传输数据的编码格式(contentType) 主要研究POST请求数据的编码格式 因为GET请求数据就是直接放在url后面的 可以朝后端发送post请求的方式 form请求ajax请求api工具 【1】form表单 前后端传输数据的格式 urlencoded formdata json 【2】编码格式 form表单默认…