一道原创的js原型题

console.log(Number.toString.length);
console.log(Number.__proto__.toString.length);
console.log(Number.prototype.toString.length);
console.log(new Number().toString.length);

console.log(Number.prototype.__proto__.toString === String.prototype.__proto__.toString);

答案分别是: 0 0 1 1 true;

解题思路:

解题前须知: function.toString方法返回的是函数的形参个数,具体介绍请参考: MDN

1:

         Number构造函数本身没有toString方法,Number构造函数的__proto__指向Function.prototype; 它的toString方法继承于Function.prototype; 结果为0 

2: 

        如1中描述, Number.__proto__指向Function.prototype; 结果同样为0 ;

3&4:

         4中的 new Number( )指构造函数的实例对象, 根据原型链可知, new Number( ).__proto__ === Number.prototype; 由于number中的toString方法会有一个隐藏参数10,(代表十进制),所以结果为 1; 

5:  结果为true,他们都指向Object.prototype (根据原型链查找), 同理 Number.__proto__=== String.__proto__=== Function.prototype; (因为Function是所有函数的爸爸,Object是所有对象的爸爸)

        

上一篇:Day04 运算符与基本运算


下一篇:MyBatis(lombok)