原由
在网上无意间看到这么一道题,第一次实践,直接报错,所以记录下来加深影象
历程
一看到数字能够挪用函数,最早想到的相似的场景就是
(5).toFixed(2)
,那末接下来,有两个思绪了1、重写Number原型对象中的要领
2、在Number的原型对象中增加要领
思绪一在实践历程当中,终究在
bind
要领中丢失了自我,末了摒弃医治,先记下来今后再战。思绪二,本人没有细致斟酌,直接写了下面一段代码
Number.prototype.fn1 = function (item){
const value = this.valueOf(); // value
const result = value - item;
return result;
};
Number.prototype.fn2 = function (item){
const value = this.valueOf(); // value
const result = value + item;
return result;
}
console.log((5).fn1(2).fn2(3));
效果就是报错:
fn1
未定义打断点,发明没有挪用
fn1
,而是在
fn2
定义的时刻直接报错,在控制台打印
Number.prototype
,发明
fn1
在打印出的对象中,
fn2
却没有涌现。一番死脑筋的查询材料,终究在mdn上,发明
Number.prototype
的
configurable
属性为
false
处理
那末题目好办了,
Number.prototype
继续于
Object.prototype
,
Object.prototype
的
configurable
属性值是
true
。变动代码以下
Object.prototype.fn1 = function (item){
const value = this.valueOf(); // value
const result = value - item;
return (result);
// return result; 不加()的话,背面的.会被识别为小数点哦
};
Object.prototype.fn2 = function (item){
const value = this.valueOf(); // value
const result = value + item;
return result;
}
console.log((5).fn1(2).fn2(3));
ok,题目到这里完毕,别的,顺手查了
String.prototype
和
Boolean.prototype
,它们的
configurable
属性值也是
false
。
遗留题目
实在,删撤除上述
Number.prototype.fn2
,只实行
(5).fn1(2)
是能够的,为何加一个属性能够,加两个却不可,正在研讨,也愿望有高人解答。
Number.prototype.fn1 = function (item){
const value = this.valueOf(); // value
const result = value - item;
return (result);
};
console.log((5).fn1(2));