位置: 编程技术 - 正文

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

  • 出口退免税的退税办法为
  • 外包和离岸外包一样吗
  • 发票后面附清单明细能导出吗
  • 劳务报酬和工资薪金哪个税率高
  • 当月收到的发票可以当月认证吗
  • 租办公用房要交房产税吗
  • 员工食堂餐费可以报销吗
  • 行政单位的存货是什么
  • 以前年度亏损本季度盈利所得税申报
  • 应交印花税会计分录
  • 积分小技巧
  • 平销返利怎么开票入账
  • 填报企业年报
  • 家政公司可以开专票吗
  • 增值税普票当月开错了怎么办
  • 怎么恢复系统win10
  • 更改macbook
  • 企业自持商品住房定义
  • 高新技术企业的研发费用加计扣除
  • 自创商誉的确认
  • 企业接受现金捐赠如何开具发票
  • php数组函数 菜鸟
  • php array_pop函数
  • 工程复工程序是什么
  • php fgetcsv
  • 固定资产置换存货的账务处理
  • 'The Wave' sandstone formation in Coyote Buttes North, Paria Canyon-Vermilion Cliffs National Monument, Arizona (© Dennis Frates/Alamy)
  • 单位购买降暑用品
  • 汇总纳税企业总分机构信息备案
  • 财务费用为什么流向债权人
  • html表格用法
  • ajax和axios区别
  • 图像识别算法汇总表
  • php 短信验证码
  • 确认应付职工薪酬如何计算
  • wordpress建立数据库错误
  • 长期待摊当期发票怎么开
  • 员工意外伤害保险最多赔多少
  • 如何关闭mysqld
  • 六税两费减半征收政策
  • 发工资是用借记卡还是储蓄卡
  • 哪些公司可以开电费发票
  • 永久性差异有哪些项目
  • 个体户是什么样的
  • 买二手车注意事项与提车细节
  • 总公司和分公司不在一个区怎么纳税
  • 期末应交税费有余额吗
  • 旅游业小规模纳税人增值税申报
  • 年终返利销售政策范本
  • 有偿服务职工怎么办
  • 货款还没收到有违法所得吗
  • 无形资产投资入股是否缴纳企业所得税
  • 实务操作中如何快速记忆
  • 以前年度损益调整借贷方向
  • 数据库中两张表tab1
  • sql server怎么创建表语句
  • mysql索引方式有哪些
  • sql判断字符串是否为日期
  • mac怎么用win系统
  • win9什么时候发布的
  • 修改远程桌面端口命令是什么
  • bios怎么设置efi引导
  • os x10.10.4beta6下载地址 os x10.10.4beta6官方下载网址
  • win7禁用驱动签名后可以正常启动吗
  • win7文件夹怎么显示大小
  • win10 Mobile 10586.36预览版更新了哪些内容?
  • linux命令grep -rl
  • linux给文件赋全部权限
  • 安卓listview的用法
  • jquery动画库
  • opengl编程实例
  • 在shell脚本中$用于
  • js document.cookie
  • android中文文档
  • 深入理解新发展理念,推进供给侧结构性改革
  • 开票系统忘记密码怎么找回
  • 出口退税期限最长几个月以上
  • 小微企业怎么报增值税
  • 乌鲁木齐交通服务电话
  • 如何进行税务筹划的方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设