位置: 编程技术 - 正文

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

  • 增值税开票软件怎么改开票人
  • 捐赠支出增值税
  • 出口货物退税的基本原则
  • 关于美容院的会计如何做账
  • 其他综合收益算营业利润吗
  • 个体户可以开多个银行账户吗
  • 出口未报关收到外汇怎样处理
  • 交通运输行业属于什么性质
  • 电子承兑逾期提示付款说明怎么写
  • 未达起征点销售额是含税还是不含税
  • 工资薪金所得和全年一次性奖金
  • 红字使用禁忌
  • 购买旧资产如何入账
  • 网上代购收取手机费吗
  • 小规模纳税人开了3%的专票还能享受1%
  • 主营业务收入借方负数表示
  • 预提职工福利怎么记账
  • 补缴以前年度税费
  • 待处置资产损溢在什么科目
  • 工业企业小规模纳税人的认定标准
  • 饭店试菜费用如何计算
  • 发生销售折扣如何做账
  • 主营业务税金及附加怎么算
  • 上月已认证的发票发现错误怎么办
  • 合同无效后还能主张违约责任吗
  • 没有发票的固定资产可以税前扣除吗
  • 办公设备发票开票内容
  • 金融企业贷款损失准备金
  • 财务费用年末有余额吗
  • 拆迁安置房如何更名
  • 向境外分配股息怎样算税额
  • 代收代付快递货款需要发票吗,中间差额服务费怎么开票?
  • 企业收到政府补助时,无需开发票,双方根据银行电汇单
  • 发工资和扣社保的区别
  • 键盘灯无法开启
  • linux grep使用
  • PHP:Memcached::quit()的用法_Memcached类
  • 划拨用地无使用权怎么办
  • 处置固定资产增值税怎么计算
  • 营业外收入账户性质
  • 残保金计入税金还是管理费用
  • 员工报销垫付的钱怎么入账
  • 工具人
  • javascript百炼成仙免费
  • yolov5部署微信小程序
  • openssl 加密套件
  • upf命令
  • 按25%计算应交所得税
  • 发票打印错误如何修改
  • 不能加计扣除的研发费用在辅助账怎么反映
  • dedecms建站操作
  • mysql的lsn
  • 企业与债权人进行债务重组
  • sql server s
  • 购进商品印花税怎么计算
  • 外地预缴税款流程
  • 工程安装公司注册条件
  • 税收返还会计核算
  • 售后回租租赁合同买车有效吗
  • 租车费报销管理规定
  • 客房服务费可以开发票吗
  • 简易征收是什么意思和一般纳税人
  • ubuntu 安装zsh
  • linux网卡lo
  • 怎样打开进程管理器功能
  • NPFMSG.exe - NPFMSG是什么进程 有什么用
  • win7系统纯净版64位无法修改窗口颜色怎么办?Win7窗口颜色修改详细步骤
  • linux的安装方法
  • perl的$1
  • unity learn
  • js简单代码
  • unity如何成一组
  • jquery操作html代码
  • js很简单
  • jquery设置图片大小
  • jq获取节点属性
  • 税务局巡察反馈问题清单
  • 党建服务中心属于哪个区
  • 小规模纳税人可以开增值税专用发票吗
  • 河南省国家税务总局网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设