test.prototype里的showinfo方法可以直接用car1.showinfo()?

test.prototype里的showinfo方法可以直接用car1.showinfo()?

为什么调test.prototype里的showinfo方法可以直接用car1.showinfo()?而不是car1.prototype.showinfo()

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕星星 2018-09-18 13:51:37

http://img1.sycdn.imooc.com//climg/5ba091b1000160f907370283.jpg

http://img1.sycdn.imooc.com//climg/5ba091c20001b22b06510280.jpg

constructor 属性是专门为 function 而设计的,它存在于每一个 function 的prototype 属性中。这个 constructor 保存了指向 function 的一个引用。如果没有使用this方法或者是在原型中添加属性,而是直接添加的,需要在constructor 属性里面获取。

obj.constructor === Person

obj.constructor === Person.prototype.constructor

自己可以测试下,祝学习愉快~~

好帮手慕星星 2018-09-18 10:44:59

http://img1.sycdn.imooc.com//climg/5ba064f40001cb2909740419.jpg

这两个方法是test原型里面的,然后将test实例化之后赋值给了car1,也就是card1拥有了这些属性和方法,并不是card1的原型上有这些属性和方法,直接调用就可以了,不需要使用card1原型调用。

祝学习愉快~~


  • 提问者 胖头鱼yyf #1
    我有一点不是很明白为什么用用原型定义一个方法实例化之后可以用car1.showInfo()调用而直接在text.showInfo=function(。。。)定义方法却不可以car1.showInfo()调用? <script type="text/javascript"> function Person(name,age,sex){ Person.prototype.name=name; Person.age=age; this.sex=sex; } var obj=new Person("li",18,"male"); console.log(obj.name); console.log(obj.age); console.log(obj.sex); </script> 就像上面三个打印,我有点搞不懂他们的原理,只能死记!
    2018-09-18 12:57:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师