下午室友发给我一道前端面试题,因为当时忙着赶项目,目光扫了一眼,立马就回答道 “写一个add方法和一个minus方法传参数进去就好了丫~ ”
等下班回过头来仔细看这道题,为自己的愚蠢的回答感到愧疚,发现题中是数字调用方法,这不是简单写个方法就能实现,而需要用到JS原生属性prototype
一、Number.prototype
- Number.prototype属性表示Number 构造函数的原型。
- 所有 Number实例都继承自Number.prototype,修改 Number 构造函数的原型对象会影响到所有 Number实例。.
- 通过给 Number.prototype增加方法可以让该方法对所有number都可用
二、Number实例方法
我们通过控制台将Number原生实例方法打印出来,如图
三、通过Number.prototype增加全局方法
以上面的面试题为例,我们需要给Number增加一个add和minus方法
-
Number.prototype.add =
function(num) {
-
return
this + num
-
}
-
Number.prototype.minus =
function(num) {
-
return
this - num
-
}
-
console.log((
3).add(
2).minus(
1));
// 4
再去查看一下Nubmer.prototype实例,我们会发现多了两个全局方法add和minus