位置: 编程技术 - 正文

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基础笔记)

  • 筹建期间取得的利息收入 企业所得税
  • 微信支付宝等三方支付平台余额属于货币资金吗
  • 空调安装维修费会计科目
  • 汇票委托书会计分录
  • 增值税应税销售额包括哪些
  • 资产处置损益在借方表示赚还是赔?
  • 应收账款余额百分比法是什么意思
  • 销售额包括哪些收入
  • 未达起征点销售额是含税还是不含税
  • 社保代扣代缴怎么取消
  • 商品明细分类账怎么做
  • 计提存货减值准备怎么算
  • 知识产权投资是什么意思
  • 土地评估费计入什么会计科目
  • 没有税收编码的发票怎么开具红字票
  • 财务发票已开但钱未到位怎么处理?
  • 三证合一怎么查询
  • 小规模季度不超过30万元免税会计分录
  • 机顶盒包括
  • 合伙人投入的资金怎么记账
  • 4s店开业有什么优惠
  • 发票开负数冲红做什么会计分录?
  • 毛利润和纯利润的计算公式
  • 收取赔偿金开具什么发票
  • 为什么win10系统更新不了
  • 如何安全的处置电子邮件
  • 批量删除 超链接
  • 应用程序无法正常启动0xc000012d
  • PHP:oci_get_implicit_resultset()的用法_Oracle函数
  • mac怎么删除cineware
  • 公司要交什么税个人卖给公司的二手车
  • Create OpenAI Account的教程来啦,赶紧学习吧!
  • php中自定义常量的函数是
  • 2021前端面试大全
  • web前端面试题目
  • init 6命令
  • 哈希表散列函数
  • 发票申请条件
  • 营业外收入需要报增值税吗
  • 企业合并兼并收购的区别和联系
  • 总公司发票可以入账分公司吗怎么做账
  • 织梦如何使用
  • aspcms标签
  • 工业企业提供劳务
  • 工会经费计算表
  • 工程结算是否算成本
  • 免税企业免征增值税条件
  • 无形资产比如
  • 小规模纳税人能开6%增值税专用发票吗
  • 小企业固定资产入账标准
  • 普通发票可以抵扣吗
  • 间接人工费用计入什么科目
  • 印花税的征税范围口诀
  • 预收账款年底是不是不能有余额
  • 融资租赁会计处理实例承租人
  • 应纳税所得额计算公式excel
  • 刚开业的健身房
  • 季节性移动的原因
  • 下列项目的进项税额可以从销项税额中抵扣的是()
  • 会计总监的薪资是多少
  • sql server m1
  • ubuntu复制文件到当前文件夹
  • win 7操作系统安装
  • 微软9月补丁
  • ubuntu系统中怎么安装mathematica13.1.0
  • linux怎么删除文本文件
  • sgmain.exe - sgmain是什么进程 有何作用
  • linux 测试工具
  • windows预览0x80072ee2
  • js中不用var声明
  • Java中string类型比较大小
  • 浅谈特殊儿童的融合教育论文
  • python 开源框架
  • jquery 右键菜单
  • python中验证码校验
  • 国家税务总局令第43号公告
  • 2024新车购置税政策
  • 企业所得税的计算,收入是含税还是不含税
  • 河南省焦煤集团董事长
  • 房屋赠与给子女要交多少税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设