位置: 编程技术 - 正文

Javascript学习笔记之函数篇(五) : 构造函数(javascript总结笔记)

编辑:rootadmin

推荐整理分享Javascript学习笔记之函数篇(五) : 构造函数(javascript总结笔记),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript入门教程,javascript入门教程,javascript学习指南,javascript如何学,javascript怎么学,javascript如何学,javascript学习指南,javascript基础笔记,内容如对您有帮助,希望把文章链接给更多的朋友!

Javascript 中的构造函数与其他语言相比也是不同的。任何通过关键字 new 调用的函数都可以当做构造函数。在构造函数体内,this 指向新创建的对象。如果构造函数体内没有显示的 return 表达式,那么我们就默认返回 this,也就是新建的对象。

上面的代码将 Foo 作为构造函数进行调用,并将新建对象的原型(__proto__)指向了 Foo.prototype。如果我们在构造函数内定义返回的 return 表达式,构造函数就会返回整个表达式,但这个返回表达式必须为一个对象。

如果 new 被省略,那么函数将不能返回一个新的对象。

上面的例子可能在某些场景下也可以运行,但由于 Javascript 中 this 的工作机制,这里 this 将指向全局对象。

工厂模式

为了能够不使用关键字 new,构造函数将不得不显示返回一个值。

Javascript学习笔记之函数篇(五) : 构造函数(javascript总结笔记)

上例中使不使用 new 来调用函数 Bar 达到的效果是一样的,将会返回一个新建的包含 method 方法的对象,这里实际上就是一个闭包。这里需要注意一点,new Bar() 将不会返回 Bar.prototype,而是在 return 表达式内函数 method 的原型对象。上例中,使用 new 与否在功能上是无差异的。

通过工厂模式创建新的对象

我们经常被提醒不要使用 new,因为一旦忘记了它的使用将导致错误。为了创建一个对象,我们更愿意使用工厂模式并在工厂模式内构造一个新的对象。

尽管上例代码比使用 new 时更不容易出错,而且在使用私有变量时将更加方便,但同时也有一些不好的地方:

因为不能共享原型对象,所以需要更多的内存。为了实现继承,工厂模式需要拷贝另一个对象的所有方法或者将其作为新对象的原型。放弃原型链只是为了避免使用 new,这似乎与 Javascript 语言的精神相悖。

总结

尽管使用 new 可能比较容易产生错误,但这并不能成为放弃使用原型链的原因。至于最后采取哪种方式,这需要根据应用的需求而定。最好的方式就是选择一种风格并坚持下去。

简单的说构造函数就是初始化一个实例对象,对象的prototype属性是继承一个实例对象。

Javascript学习笔记之函数篇(六) : &#;作用域与命名空间 在之前的介绍中,我们已经知道Javascript没有块级作用,只有函数级作用域。functiontest(){//ascopefor(vari=0;i;i++){//notascope//count}console.log(i);//}Javascript中也

Javascript 赋值机制详解 今天回答了一个关于Javascript的问题,涉及到了赋值问题,因此想把这个问题好好总结下。vara='test';varb=function(){};b.a='test';functionchange(m,n){m='change';n.a='chang

Javascript学习笔记之数组的遍历和 length 属性 尽管数组在Javascript中是对象,但是不建议使用forin循环来遍历数组,实际上,有很多理由来阻止我们对数组使用forin循环。因为forin循环将会枚举原型链

标签: javascript总结笔记

本文链接地址:https://www.jiuchutong.com/biancheng/384806.html 转载请保留说明!

上一篇:Javascript学习笔记之函数篇(四):arguments 对象(javascript总结笔记)

下一篇:Javascript学习笔记之函数篇(六) : 作用域与命名空间(javascript基础笔记)

  • 公司租的库房应该计入什么科目
  • 印花税需要每月缴纳吗
  • 文化事业建设费减免政策
  • 工资计提金额有误怎么调整
  • 基本户如果没有资金往来
  • 车辆购置税可以刷信用卡吗?
  • 交强险可以打折扣吗
  • 出售无形资产计入资产处置损益
  • 法定盈余公积可以分配给股东吗
  • 汇算清缴交了税怎么做分录
  • 如何在电子税务局开发票
  • 土地补偿款收入要交什么税
  • 赡养老人专项附加扣除可以是爷爷奶奶吗
  • 支付城镇土地使用税会计科目
  • 待认证进项分录
  • 处理报废的固定资产
  • 品牌使用费的账务处理
  • 单位房子没有房产证能不能买
  • 管理咨询公司需要什么条件才能开发票
  • 技术服务费普通发票怎么做账务处理
  • 小汽车残值率多少合适
  • 收到汽车保险赔款怎么做账
  • 企业员工差旅平台排行
  • 利润表有盈利能力吗
  • b4纸张尺寸
  • 行政划拨无偿取得的土地使用权属于什么资产
  • 印花税的征收范围
  • php实现文件上传
  • 清理c盘清理
  • 电脑系统出问题了怎么办
  • G40/50-70、SR1000随机Linux改安装Win7系统的实现方法
  • 公司邮票报销
  • PHP:highlight_file()的用法_misc函数
  • 企业事业单位应当采取有效措施
  • php单独运行
  • 公司向个人支付劳务费
  • 专项应付款费用化
  • 建筑行业总分包怎么算
  • 错误解决方法
  • 汇率一般是以几位数来显示
  • 帝国最新版本
  • 税务三方协议怎么重签
  • 个体户做账流程新手必看
  • 什么是进项税转出成本
  • 报建费减免
  • 进项税和销项税月末怎么结转
  • 当月销售次月开票就按次月申报
  • 结转个人承担的社保费分录
  • 织梦网站特有标识
  • mongodb官方文档中文
  • 盈余公积转增资本会计科目
  • 跨境收入免增值税需做备案吗
  • 物流货损怎样处理
  • 委托加工物资账务
  • 账务处理程序的定义
  • 以前年度损益调整结转到哪里
  • 营改增后不动产转让增值税
  • 新契税法商业
  • 会计从业人员信息查询
  • 房产预售什么时候开始
  • sql server获取字段长度
  • mysql5.7.29安装
  • win8系统如何开机直接进入桌面
  • centos7脚本
  • msmpeng.exe是什么进程
  • win7如何设置屏幕不黑屏
  • linux不小心删除目录怎么恢复
  • shell脚本数字运算
  • dos命令中删除文件命令有哪些
  • 正确的解决方式
  • python写出来的程序怎么用
  • javascript函数的定义
  • javascript数据结构与算法
  • 查验发票真伪
  • 绿化项目利润
  • 南京税务局 局长
  • 开普票需要提供合同吗
  • 江苏国税局官网
  • 车辆购置税减免政策上汽大通 大家mifa6
  • 地税局一般几点下班
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设