Javascript中的原始类型如何具有方法和属性?

时间:2018-11-05 06:26:16

标签: javascript

var num1 = new Number(5);
typeof(num1); //returns "object"
num1.toString(); //returns "5"

我知道num1作为对象具有属性.__proto__,通过它通过访问原型(.toString())链可以访问.__proto__

var num = 5;
typeof(num); //returns "number"
num.toString(); //returns "5"

在上述情况下,num是原始类型number。这意味着它将没有任何属性和方法。那么如何获得对.toString()方法的访问?

2 个答案:

答案 0 :(得分:3)

  

这意味着它将没有任何属性和方法。

当涉及到基元时,Javascript具有称为强制的属性。它会悄悄地将原语转换为任何对象,然后访问新构造的数字对象的原型方法。

答案 1 :(得分:1)

Javascript在原语和对象之间强制转换。在这种情况下,数字会转换为对象以访问字符串。

您可以使用

获取对象
//tweaking the to string
Number.prototype.toString = function() {
    return typeof this;
}
var num = 5;
typeof(num); 
num.toString(); //returns "object"