JS初始化对象

本文探讨了JavaScript中初始化对象的概念,通过实例说明了如何在创建对象时调用init方法进行初始化。文章指出了手动调用init的局限,并分析了在函数实例化过程中由于原型链问题导致的say方法找不到的错误。解决方案是正确设置init.prototype以确保其指向Dog.prototype,从而正确继承方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是初始化对象?

顾名思义,我们创建对象时便已调用默认编写的init方法,实现初始化。
我们要求调用say方法时,能输出init里的属性。
(*通常写法下,在函数中使用this.xxx形式可以完成需求,但此写法可以将构造器的初始化信息封装成一个方法,统一添加到prototype上,更简洁直观,需要在一个函数中增添多种实例方法时,此写法最为优雅。)
在这里插入图片描述

实现

一、

先调用init方法
在这里插入图片描述
输出: wc 1
这种方法每次需要手动输入,不满足需求。

二、

return init方法
在这里插入图片描述
在这里插入图片描述
报错,找不到say方法。
因为函数实例化时,实例化了init,而我们并没有在init的prototype上定义say方法,d对象的_proto_属性在init的prototype上找不到say方法。
(*可参考我的关于JS原型链的文章)
在这里插入图片描述
解决:
将init.prototype指向Dog.prototype.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值