前言

本文小编带大家一起学习的是在 JavaScript 中使用构造器函数(construcor function)模拟类。下面话不多说,感兴趣的朋友们下面来一起看看吧。
构造器函数简介
你可以使用 ES6 的 class 关键字来实现类,不过我建议你使用传统的构造器函数来模拟类,因为这样可以给人一种你是个 JavaScript 老手的错觉,哈哈!
什么是构造器函数?构造器函数是编写对象的方法之一。一般情况下,你可以这样编写一个对象:
var obj = { a:1, b:2 };
但也可以使用构造器函数来编写对象:
function Obj(a, b){
this.a = a;
this.b = b;
}
var obj = new Obj(1, 2); //obj 等价于 { a:1, b:2 }
使用构造器函数的好处在于可以传递参数。构造器函数通常首字母大写,而且需要使用 new 关键词来调用。在 JavaScript 中是没有类的,利用构造器函数我们可以模拟一个类。
使用构造器函数编写栈类
了解了构造器函数,我们使用它编写一个迷你的栈类,下面就是实现代码:
Stack.js
function Stack() {
// 私有变量 items,用于记录数组,对象不能直接操作
var items = [];
// 类方法 push,在数组末尾添加项,对象可以直接调用
this.push = function (element) {
items.push(element);
};
// 删除并返回数组末尾的项
this.pop = function () {
return items.pop();
};
}
上述栈类中,有个私有变量 items ,为何它就不能直接操作呢?为何挂在 this 上的方法可以直接调用?因为 new 操作符会将构造器函数中的 this 指向生成的对象,也就是说挂在 this 上的方法或属性将来会成为生成对象的方法或属性,所以可以直接调用。而 items 则是函数内部的一个局部变量,它在函数外部是不可见的,生成对象只能通过调用自身的方法,沿着作用域链来操作 items。
var stack = new Stack(); // stack 对象不能直接操作items,结果是 undefined console.log(stack.items) // stack 对象可以直接操作构造器函数中挂在 this 上的属性和方法 stack.push(1); // 打印了1 console.log(stack.pop())
如果你不熟悉 JavaScript ,那么你应该先学习一下 JavaScript 作用域、this 和 new 操作符的相关知识。推荐阅读参考 Stoyan Stefanow 的《JavaScript 面向对象编程指南》,这本书里面有很多小的代码片段以及相关的图文解读,可以帮助你更好地理解 JavaScript 的相关特性。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用Javascript能带来一定的帮助,如果有疑问大家可以留言交流。
# javascript
# 构造函数
# 构造器
# javascript的构造函数
# javascript asp教程第三课 new String() 构造器
# JavaScript中使用构造器创建对象无需new的情况说明
# 详解JavaScript中的构造器Constructor模式
# JavaScript设计模式之工厂模式和构造器模式
# javascript设计模式Constructor(构造器)模式
# JavaScript 高级篇之闭包、模拟类
# 继承(五)
# js模拟类继承小例子
# JavaScript 模拟类机制及私有变量的方法及思路
# 在JavaScript中模拟类(class)及类的继承关系
# 关键词
# 挂在
# 你可以
# 直接调用
# 是在
# 有个
# 有很多
# 则是
# 感兴趣
# 我们可以
# 朋友们
# 给人
# 但也
# 可以直接
# 你应该
# 可以使用
# 这本书
# 这篇文章
# 它在
# 大家一起
相关文章:
如何用PHP快速搭建高效网站?分步指南
如何通过网站建站时间优化SEO与用户体验?
如何选择香港主机高效搭建外贸独立站?
Bpmn 2.0的XML文件怎么画流程图
C#如何序列化对象为XML XmlSerializer用法
建站主机与服务器功能差异如何区分?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
建站之星备案流程有哪些注意事项?
c++怎么用jemalloc c++替换默认内存分配器【性能】
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
微信h5制作网站有哪些,免费微信H5页面制作工具?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
制作证书网站有哪些,全国城建培训中心证书查询官网?
Android滚轮选择时间控件使用详解
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何快速上传自定义模板至建站之星?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
建站上市公司网站建设方案与SEO优化服务定制指南
建站之星CMS五站合一模板配置与SEO优化指南
如何用美橙互联一键搭建多站合一网站?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
手机网站制作与建设方案,手机网站如何建设?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
如何在宝塔面板中修改默认建站目录?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
高端建站如何打造兼具美学与转化的品牌官网?
制作企业网站建设方案,怎样建设一个公司网站?
网站制作服务平台,有什么网站可以发布本地服务信息?
如何有效防御Web建站篡改攻击?
安徽网站建设与外贸建站服务专业定制方案
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
怎么将XML数据可视化 D3.js加载XML
MySQL查询结果复制到新表的方法(更新、插入)
Swift中循环语句中的转移语句 break 和 continue
如何使用Golang table-driven基准测试_多组数据测量函数效率
北京网站制作的公司有哪些,北京白云观官方网站?
建站之星后台密码遗忘?如何快速找回?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何快速搭建支持数据库操作的智能建站平台?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
TestNG的testng.xml配置文件怎么写
建站org新手必看:2024最新搭建流程与模板选择技巧
如何在万网自助建站平台快速创建网站?
小型网站建站如何选择虚拟主机?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
*请认真填写需求信息,我们会在24小时内与您取得联系。