学过原型以后关于对象方法的思考

学过原型以后关于对象方法的思考

因为在没学过原型以前,理解的是 Object.way() 访问的所有方法都是一个对象自己所具有的方法,所有对于当操作一个this时候的疑问还没有,但是在学过了原型以后,发现一个对象通过点号访问的方法很有可能不是他自己的,那么类似于toString这类操作this的方法又怎么回事呢?

 

首先,我们知道Number和Object的对象都有toString属性,当我们使用Number.toString()方法时答案无疑惑的是function Number() {....},因为它本身就有toString这个方法,这里当然调用的就是它本身已经具有的方法,而不是顺着原型链然后一直往上面去查找,

然后当我们把Number.prototype设置为一个空对象时

Number.prototype = {};

那么这时候Number的原型里面已经没有这个toString方法了,那么这时候就要去找到Object的原型,并调用到Object中的原型的方法,注意到这里的调用的不是自己的原型中的方法然而却依然打印的是 function Number() {....} 而不是 function object() {...} ,所以这个 way 是的是不重要的,谁调用的他,那么这个 way 中的 this 就是谁。

 

其实在写这个的中间我就已经发现了我写的存在的问题,不过依然是写了下来,仅供自己参考一下

posted @ 2018-12-06 14:54 秦晓 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值