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是所有对象的爸爸)