位置: 编程技术 - 正文

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

  • 全国增值税专用发票计算机稽核网络系统工程
  • 销项税转出是啥意思
  • 土地增值税扣除项目金额怎么算
  • 电子税务局怎么添加财务负责人
  • 明明申报了为什么显示没有申报
  • 汽车保险专用发票怎么做账
  • 小规模国税怎么报税
  • 合作建房的土地出让金在土地增值税中可以加计扣除嘛
  • 固定资产评估增值的账务处理
  • 商标注册费用计入会计科目二级
  • 微信小程序实现微信支付
  • 制造业贷款用途
  • 核定征收营业范围
  • 把十六点改成十五点半起床
  • 支付往来款项应该注意什么
  • 日常管理的基本内容及方法是什么
  • 应收账款负数可以调到哪个科目
  • 以资抵债方式取得的无形资产如何记账?
  • 防伪税控技术维护费怎么申报
  • 待摊费用和预提费用的区别
  • 磁盘碎片指的是磁盘因为长期使用
  • 64位windows系统下安装Memcache缓存
  • 固定资产拆除怎么处理
  • 注册资金没有的怎么做账
  • PHP:Memcached::fetchAll()的用法_Memcached类
  • 最高跑分纪录的显卡是什么
  • PHP:pcntl_wifexited()的用法_PCNTL函数
  • 售后回购不符合法律规定
  • 工资薪金所得申报流程
  • 高德加载kml
  • Laravel 5.5 的自定义验证对象/类示例代码详解
  • 存货的盘亏损毁和报废
  • react hook详解
  • 自然语言处理属于人工智能的哪个领域
  • 外地工程预缴的个人所得税是什么申报
  • 远期外汇合约的特点
  • 人力资源外包服务企业
  • 一般纳税人费用专票如何做账
  • access中宏是按什么调用的
  • 季度所得税怎么算
  • 股份支付属于应付职工薪酬吗?
  • 培训费 会议费
  • 关于税务机关扣押程序
  • 小规模企业现金流量表
  • 房地产项目完工清算报告
  • 财务风险有什么类别
  • 汇兑损益方式为外币结清怎么操作
  • 合理损耗如何处理
  • 代理进口货物如何确定增值税纳税人
  • 代扣代缴预提所得税10%是什么意思
  • 企业所得税汇算表
  • 购买的银行理财产品能提前赎回吗
  • 应交增值税进项税额月底怎么处理
  • 向投资者分配利润或股利为什么减少所有者权益?
  • 市政配套费交给哪个部门
  • mysql数据库的使用
  • win7系统怎么运行xp系统的软件
  • Windows开关机音乐-哔哩哔哩biibii
  • MAC百度网盘下载的压缩包怎么导出
  • 微信开发者软件
  • win10怎么预览
  • rtos用什么语言
  • windows7修改注册表
  • win10里的运行
  • linux怎么禁用用户
  • JavaScript中对象方法的创建
  • xbox无法连接无线网络
  • 搭建入门
  • win10文件类型选项
  • unity3d 物理引擎
  • python装饰器与递归算法详解
  • jquery实例
  • python迭代器iter
  • jquery22插件网
  • 福建省电子税务局官网登录入口
  • 重大税务案件审理办法51号令
  • 第一次去税务局领发票
  • 新加坡税务局电邮
  • 为什么我电脑登微信显示二维码失效
  • 建筑工程招标代理服务费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设