位置: 编程技术 - 正文

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

  • 单独计税的年终奖怎么算
  • 银行电子回单有没有法律效应
  • 个税汇算清缴时全年一次性奖金汇总到工资薪金怎么操作
  • 基本户和一般户的用途
  • 股东分红按利润表的净利润计算
  • 融资租赁和经营性租赁区别
  • 买二手房没满2年多少税
  • 辅导期纳税人会计处理
  • 税收的构成要素包含哪些内容
  • 行政单位明细账包括哪些
  • 出纳在银行领了钱出纳要怎样记帐?
  • 员工福利费是不是加班费
  • 税务社保扣取300干嘛的
  • 材料采购成本差异属于什么科目
  • 没有计提坏账准备的应收帐款坏帐帐务处理
  • 发票没开完可以领取吗?
  • 如何查询已开出的增值税发票是否被认证
  • 代扣代缴增值税纳税义务发生时间
  • 民办中小学收费新政策
  • 直接成本和间接成本差异
  • 会计调账有哪些方式
  • 房地产开发企业资质证书
  • 本期预收的货款属于
  • 2021windows10专业版
  • 打开网页出现电脑标志
  • photoshop人像磨皮方法
  • 已经计提工资后怎么做账
  • 权益净利率是什么意思啊
  • 什么电脑系统比较好
  • 进口关税增值税计算公式
  • mac os x v10.10
  • 企业开发产品转为自用的,不得在税前扣除折旧费用
  • 对公账户存款利息要交增值税吗
  • 贷方发生额是什么意思是利息吗
  • 原材料和固定资产入账价值的计算
  • 汽车报废残值收入怎么做账
  • win10多任务视图怎么关闭
  • 现金折扣发生销售退回
  • Waterfalls at the source of the Mundo River, Sierra de Riopar, Albacete, Spain (© Westend61/Getty Images)
  • 西班牙的藏红花好不好
  • 牛顿地名
  • 研发人员的差旅费可以加计扣除吗
  • yolo系列算法全家桶
  • 劳务费过账
  • 微信交电费怎么交
  • 开具红字增值税普通发票
  • sqlserver2008安装步骤图文
  • 企业将重组债务转为资本的会计处理
  • 母公司和子公司是什么关系
  • 新准则合同结算的科目编码为
  • 收到股东的投资款现金流量表
  • 公司转帐支票可以转账吗
  • 录入期初余额的操作方法
  • 坏账准备的核算方法
  • 最低标准买社保公积金个人缴纳多少钱
  • 给对方承兑对方不承认怎么办
  • 实际到货跟采购不一致
  • 经营活动产生的现金流量净额越大越好吗
  • 酒店食材成本如何分析
  • 营业外支出增加说明了什么
  • mysql迁移方案
  • mysql unique作用
  • win10系统优酷播放不了
  • centos更新yum update
  • linux如何列出所有用户
  • mac vm安装win10
  • win10 2020h1
  • 怎么让微软账户获得所有权限
  • redhat linux yum
  • glsl编译
  • js显示时间并且之后秒数实时更新
  • python变量字符串等函数
  • 微信和qq时间格式不一样
  • android中edittext
  • unity中物体移动代码
  • 推荐javascript教程
  • android多语言失效
  • 6种javascript显示当前系统时间代码
  • 平谷大集时间表2022
  • 学校经费审批流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设