位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享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基础笔记)

  • 在建工程转固定资产需要交税吗
  • 车船税保险公司会不会多收
  • 公司购买银行理财产品怎么做账
  • 工会经费按什么交
  • 银行进账单票据号码在哪里
  • 进项税额转出税率
  • 科目错一题扣几分
  • 劳务费专票需要备注吗
  • 新增资产额怎么计算
  • 服务业发票的开具范围包括什么
  • 按月计提短期借款利息12000元
  • 土地补偿款收入要交什么税
  • 发行长期债券会计分录例题
  • 保险的月缴纳可以调整么?
  • 奖金部分
  • 增值税专用发票抵扣期限
  • 三证合一对纳税有影响吗
  • 股权转让为什么不征收增值税
  • 销售折扣购买方的红字通知单如何开
  • 销项负数发票需要抵扣吗
  • 内插法计算内部收益率公式
  • 机票进项税额怎么申报
  • 外币借款利息汇兑差额计算公式
  • 培训费没有发票怎么办
  • 招待费进项税额转出在申报表
  • 财产清查的方法和财产清查结果的会计处理
  • 房租增值税专用发票税率
  • 不附追索权的票据包括
  • 如何在 Windows 11 上更改锁屏壁纸
  • 竣工结算的依据有哪些?
  • 车间闲置固定资产怎么算
  • PHP:imagesetthickness()的用法_GD库图像处理函数
  • 直接材料成本差异账户在平时登记贷方登记
  • php实现日历
  • c语言 cmd
  • laravel ajax
  • php时间戳转换中国标准时间
  • 如何购买增值税发票需要什么资料
  • yolo v5超详细解析
  • 开关电源pcb布线规则
  • web前端基础教程
  • ijk解码是什么意思
  • 应计入利得和损失项目的有
  • python3 字典遍历
  • 如何让别人访问自己的qq空间
  • 收取的水电费怎么入账
  • 交易性金融资产的账务处理
  • 公允价值变动损益属于什么科目
  • 免税收入与不征收的区别
  • 认缴意思
  • 扣供应商的货款进项税要转出吗
  • 发生销售退回账务处理
  • 企业破产作用
  • 政府拨款怎么做账
  • 单位给食堂的补贴怎么算
  • 周转材料期末余额怎么算
  • 福利费以后年度可以抵扣吗
  • 购进农产品抵扣的税率
  • 如何进行固定资产审计
  • 现金日记账的日期栏是指记账凭证的日期
  • sqlserver获取数据库名
  • 台式电脑二级网页打不开怎么办
  • 怎么修改ubuntu的ip地址
  • linux datetime命令
  • win10笔记本不显示桌面
  • linux快捷命令
  • windowsxp oobe
  • linux系统入侵检测软件有哪些
  • 按developer.android.com安装新的环境
  • js声明集合
  • 批处理/a
  • 仿淘宝源码
  • android开发之apritag
  • 留抵税额过多怎么办
  • 发票扫码抽奖用什么软件
  • 个人涉税信息采集 工行
  • 神州浩天财务软件
  • 大同税务局官网录取名单
  • 5种方式教你如何查询
  • 国家税务总局2011年34号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号