位置: 编程技术 - 正文

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

  • 企业租车能抵增值税吗
  • 一般纳税人收到普票如何入账
  • 没有销项购买税金税盘如何做账
  • 会计账簿错弊有哪些
  • 返岗补贴怎么办理
  • 异地缴纳税款
  • 差旅费的现金流
  • 网约车有电子发票吗
  • 股东个人固定资产怎么查
  • 无形资产的摊销,可摊销的标准是什么?
  • 子女教育专项附加扣除是什么意思
  • 供应商发出货物,将发货单提交给
  • 非广告公司可以开广告费发票吗?
  • 挂账留底税额如何抵扣?
  • 存货呆滞是什么意思
  • 收到基金计入什么科目
  • 福利企业退税的资金去处
  • 股票持有多久可以打新股
  • 本期有进项没有销项需要转出增值税吗?
  • 劳务税能不能抵扣
  • 差额征税条件
  • 关于不动产进项税额分期抵扣的新政策,以下不属于
  • 酒店更换地毯的请示
  • 不征税发票的12个税种
  • 金税盘需要报税吗
  • 网上申报城建税及附加怎么操作
  • 税务罚款计入哪个会计科目
  • 当月凭证做完怎么结转?
  • 收到对方公司的货款怎么记账
  • 消耗性生物资产
  • windows10如何更换桌面壁纸
  • 年末资产减年初资产
  • 事业单位收受礼品怎么处理
  • 员工垫付款怎么做分录
  • 微信转账记录怎么加回好友?
  • 外购商品可以直接结转成本吗
  • linux killall
  • 查补以前年度收入
  • 厂房拆迁补偿多少钱一平
  • 销售方怎么申请红字信息表
  • php fgets
  • vue前端页面设计
  • 采购预算测算依据
  • 销售材料账务处理
  • 浅析Laravel5中队列的配置及使用
  • 原材料用于在建工程增值税如何处理
  • 发票开错时,如何做账务处理?
  • Ficstar Software � Web Data Extraction Tools
  • 工资和五险一金在公司发,个税在子公司扣
  • 旅游门票费用可以用来报销吗?
  • 固定资产折旧费计入成本吗
  • 投资现金流负值表示什么
  • 财务负责人需要工商登记吗
  • sqlserver、mysql获取连接字符串步骤
  • 减免的附加税要申报吗
  • 公司没有销售收入
  • 预缴所得税弥补以前年度亏损
  • 企业增资的流程
  • 政府会计准则具体准则的作用
  • mysql启动成功但是无法连接
  • innodb.trx
  • xp系统打开浏览器没反应
  • 服务器时间和电脑时间
  • ghost安装盘的制作
  • chcfg.exe是什么
  • mac如何安装dmg软件
  • linux删除大量文件方法
  • linux中find命令基本使用方法
  • apache2.4.46配置
  • iis安装失败找不到源文件
  • android数据库使用
  • linux命令scp和sftp详细介绍
  • js中check
  • javascript教程推荐知乎
  • javascript开关
  • ubuntu各种方法卸载软件
  • 网上申领的电子发票如何读入金税盘
  • 发票开票系统可以查询上一年发票吗?
  • 公司税务怎么查询缴款信息呢
  • 国税局对出口退税的要求
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设