关于实例属性和实例方法

关于实例属性和实例方法

​say() {

}

这种形式是往原型上添加方法

say = function(){}

为什么这样就是给实例添加方法了,区别是什么?

在类中:sex = 'male';这种形式是给实例添加属性,那么如何给原型添加属性呢?


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

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

2回答
好帮手慕久久 2021-04-13 13:44:57

同学你好,解答如下:

写成say=function(){},会把这个say当成一个属性(类似于sex)而不是一个方法来解析,所以会把它添加在实例上:

http://img1.sycdn.imooc.com//climg/60752f5c0979bf3a05640336.jpg

祝学习愉快!

好帮手慕久久 2021-04-13 09:51:16

同学你好,解答如下:

1、对于方法:在构造函数constructor中,使用this添加的方法,则是定义在实例上的(this指代实例);而写在构造函数constructor外的方法,则是定义在原型上的;即书写位置不同、书写方式不同(一个使用了this、一个没有),添加的位置不同:

http://img1.sycdn.imooc.com//climg/6074f7dc092a12bb00000000.jpg

2、对于sex这样的属性:不论是写在constructor内,还是写在constructor外,都是添加在实例上的:

http://img1.sycdn.imooc.com//climg/6074f825091d597b05110339.jpg

http://img1.sycdn.imooc.com//climg/6074f85909171e6f06500287.jpg

3、如果想在原型上定义sex这样的属性,可以如下这样写:

http://img1.sycdn.imooc.com//climg/6074f89709b7b19a06310455.jpg

http://img1.sycdn.imooc.com//climg/6074f8a1095ab7d505160271.jpg

祝学习愉快!

  • 提问者 期限_ #1

    ​还有个疑问:
    say = function(){}

    这种方式,即使写在constructor外面也是给实例添加方法,而不是原型,这是为什么

    2021-04-13 12:50:17
  • 曼曼前端 回复 提问者 期限_ #2

    这种写法是属性的写法,把say当属性处理

    2021-08-06 11:47:16
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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