相信大家对javascript中的面向对象写法都不陌生,那还记得有几种创建对象的写法吗?相信大家除了自己常写的都有点模糊了,那接下来就由我来帮大家回忆回忆吧!

1. 构造函数模式
通过创建自定义的构造函数,来定义自定义对象类型的属性和方法。
function cons(name,age){
this.name = name;
this.age = age;
this.getMes = function(){
console.log(`my name is ${this.name},this year ${this.age}`);
}
}
var mesge = new cons('will',21);
mesge.getMes();
2. 工厂模式
该模式抽象了创建具体对象的过程,用函数来封装以特定接口创建对象的细节
function cons(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.getMes = function(){
console.log(`my name is ${this.name},this year ${this.age}`);
}
return obj;
}
var mesge = cons('will',21);
mesge.getMes();
3. 字面量模式
字面量可以用来创建单个对象,但如果要创建多个对象,会产生大量的重复代码
var cons = {
name: 'will',
age : 21,
getMes: function(){
console.log(`my name is ${this.name},this year ${this.age}`);
}
}
cons.getMes();
4. 原型模式
使用原型对象,可以让所有实例共享它的属性和方法
function cons(){
cons.prototype.name = "will";
cons.prototype.age = 21;
cons.prototype.getMes = function(){
console.log(`my name is ${this.name},this year ${this.age}`);
}
}
var mesge = new cons();
mesge.getMes();
var mesge1 = new cons();
mesge1.getMes();
console.log(mesge.sayName == mesge1.sayName);//true
5. 组合模式
最常见的方式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性,这种组合模式还支持向构造函数传递参数。实例对象都有自己的一份实例属性的副本,同时又共享对方法的引用,最大限度地节省了内存。该模式是目前使用最广泛、认同度最高的一种创建自定义对象的模式
function cons(name,age){
this.name = name;
this.age = age;
this.friends = ["arr","all"];
}
cons.prototype = {
getMes : function(){
console.log(`my name is ${this.name},this year ${this.age}`);
}
}
var mesge = new cons("will",21);
var mesge1 = new cons("jalo",21);
console.log(mesge.friends);
mesge.friends.push('wc'); //还可以操作数组哈O(∩_∩)O!
console.log(mesge.friends);
console.log(mesge1.friends);
mesge.getMes();
mesge1.getMes();
console.log(mesge.friends === mesge1.friends);
console.log(mesge.sayName === mesge1.sayName);
最后在告诉你个秘密,ES6引入了类(Class),让对象的创建、继承更加直观了
// 定义类
class Cons{
constructor(name,age){
this.name = name;
this.age = age;
}
getMes(){
console.log(`hello ${this.name} !`);
}
}
let mesge = new Cons('啦啦啦~',21);
mesge.getMes();
在上面的代码片段里,先是定义了一个Cons类,里面还有一个constructor函数,这就是构造函数。而this关键字则代表实例对象。
而继承可以通过extends关键字实现。
class Ctrn extends Cons{
constructor(name,anu){
super(name); //等同于super.constructor(x)
this.anu = anu;
}
ingo(){
console.log(`my name is ${this.name},this year ${this.anu}`);
}
}
let ster = new Ctrn('will',21);
ster.ingo();
ster.getMes();
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# javascript
# 面向对象
# js中的面向对象入门
# JS基于面向对象实现的拖拽功能示例
# Javascript之面向对象--封装
# 归纳下js面向对象的几种常见写法总结
# JavaScript面向对象编写购物车功能
# Javascript 面向对象(一)(共有方法
# 私有方法
# 特权方法)
# JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
# JS 面向对象之神奇的prototype
# 面向对象的Javascript之二(接口实现介绍)
# JS面向对象编程之对象使用分析
# javascript面向对象入门基础详细介绍
# 自定义
# 自己的
# 都有
# 都不
# 还可以
# 多个
# 这就是
# 我来
# 可以通过
# 还有一个
# 几种
# 在上面
# 那还
# 你个
# 最常见
# 就由
# 可以用来
# 啦啦
# 是目前
相关文章:
如何通过宝塔面板实现本地网站访问?
网站专业制作公司有哪些,做一个公司网站要多少钱?
宝塔建站无法访问?如何排查配置与端口问题?
如何彻底卸载建站之星软件?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
广州商城建站系统开发成本与周期如何控制?
MySQL查询结果复制到新表的方法(更新、插入)
高端云建站费用究竟需要多少预算?
如何打造高效商业网站?建站目的决定转化率
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
建站VPS能否同时实现高效与安全翻墙?
如何快速使用云服务器搭建个人网站?
网站代码制作软件有哪些,如何生成自己网站的代码?
香港服务器选型指南:免备案配置与高效建站方案解析
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何设置并定期更换建站之星安全管理员密码?
如何选择适合PHP云建站的开源框架?
详解jQuery中基本的动画方法
香港网站服务器数量如何影响SEO优化效果?
存储型VPS适合搭建中小型网站吗?
建站主机是否等同于虚拟主机?
建站之星安装路径如何正确选择及配置?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
购物网站制作公司有哪些,哪个购物网站比较好?
C#怎么使用委托和事件 C# delegate与event编程方法
建站之星安装后如何配置SEO及设计样式?
Java解压缩zip - 解压缩多个文件或文件夹实例
,南京靠谱的征婚网站?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
行程制作网站有哪些,第三方机票电子行程单怎么开?
如何通过二级域名建站提升品牌影响力?
Swift开发中switch语句值绑定模式
山东云建站价格为何差异显著?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
建站之星北京办公室:智能建站系统与小程序生成方案解析
如何用好域名打造高点击率的自主建站?
C#如何在一个XML文件中查找并替换文本内容
网站制作网站,深圳做网站哪家比较好?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
兔展官网 在线制作,怎样制作微信请帖?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
已有域名如何快速搭建专属网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
,想在网上投简历,哪几个网站比较好?
如何快速搭建高效简练网站?
网站制作价目表怎么做,珍爱网婚介费用多少?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
*请认真填写需求信息,我们会在24小时内与您取得联系。