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

因为在没学过原型以前,理解的是 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 就是谁。

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

猜你喜欢

转载自www.cnblogs.com/freesfu/p/10076708.html
今日推荐