Discuss / JavaScript / 这个装饰器实现得好机智,oldParseInt.apply这里传this或null或window都是相同的效果吧?

这个装饰器实现得好机智,oldParseInt.apply这里传this或null或window都是相同的效果吧?

Topic source
var count = 0;
var oldParseInt = parseInt; // 保存原函数
//oldParseInt也不是野生的,没人特意要,那它就是window的属性.


window.parseInt = function () {
     count += 1;
    return oldParseInt.apply(null, arguments); // 调用原函数


    //window.xxx()的形式调用函数,所以function里的this和window是一回事.
    //所以要用apply的方式调用window的oldParseInt函数,可以写成下方两种形式.
    return oldParseInt.apply(this, arguments); // 调用原函数
    return oldParseInt.apply(window, arguments); // 调用原函数
};

// 测试:
parseInt('10');
parseInt('20');
parseInt('30');
count; // 3

ksven

#2 Created at ... [Delete] [Delete and Lock User]

不是相同的效果。 传window是最规范的吧,毕竟这个函数原来就是绑定全局对象的 廖老师写null可能只是因为函数体里没用到window 绑定this是会报堆栈溢出的。因为这个地方的this指向的是function匿名函数。那为什么报堆栈溢出呢,我也不懂呢哈哈,得看apply和parseInt的文档了

没有吧? //window.xxx()的形式调用函数,所以function里的this和window是一回事. this和window是一样的东西呀,根据教程里的知识推导出来的.

你把页面刷新,重新再写一遍代码,不要做多余的测试,只留下传入this那版测试一下.

var count = 0; var oldParseInt = parseInt; // 保存原函数 //oldParseInt也不是野生的,没人特意要,那它就是window的属性.

window.parseInt = function () { count += 1; return oldParseInt.apply(null, arguments); // 调用原函数

//window.xxx()的形式调用函数,所以function里的this和window是一回事.
//所以要用apply的方式调用window的oldParseInt函数,可以写成下方两种形式.
return oldParseInt.apply(this, arguments); // 调用原函数
return oldParseInt.apply(window, arguments); // 调用原函数

};

// 测试: parseInt('10'); parseInt('20'); parseInt('30'); count; // 3 我这里测试显示: var count = 0; undefined var oldParseInt = parseInt; // 保存原函数 undefined //oldParseInt也不是野生的,没人特意要,那它就是window的属性. undefined window.parseInt = function () { count += 1; return oldParseInt.apply(null,arguments); // 调用原函数

//window.xxx()的形式调用函数,所以function 里的this和window是一回事
//所以要用apply的方式调用window的oldParseInt函数,可以写成下方两种形式.
return oldParseInt.apply(this, arguments); //
调用原函数
return oldParseInt.apply(window, arguments);
//调用原函数

}; function () { count += 1; return oldParseInt.apply(null,arguments); // 调用原函数

//window.xxx()的形式调用函数,所以function 里的this和window是一回事
//所以要用apply的方式调用window的oldParseInt函数,可以写成下方两种…

//测试: undefined parseInt('10'); VM28123:1 Uncaught RangeError: Maximum call stack size exceeded at window.parseInt (<anonymous>:1:28) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) window.parseInt @ VM28123:1 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 parseInt('20'); VM28123:1 Uncaught RangeError: Maximum call stack size exceeded at window.parseInt (<anonymous>:1:28) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) window.parseInt @ VM28123:1 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 parseInt('30'); VM28123:1 Uncaught RangeError: Maximum call stack size exceeded at window.parseInt (<anonymous>:1:28) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) at window.parseInt (<anonymous>:3:24) window.parseInt @ VM28123:1 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 window.parseInt @ VM28123:3 count;// 3 53892

我在chrome53测试过了,传this没问题。 大家不要再妄图搞些大新闻了。 在function内部判断一下 this === window 比什么都有说服力。

var count = 0;
var oldParseInt = parseInt; // 保存原函数
undefined
window.parseInt = function () {
     count += 1;
    //window.xxx()的形式调用函数,所以function里的this和window是一回事.
    //所以要用apply的方式调用window的oldParseInt函数,可以写成下方两种形式.
    return oldParseInt.apply(this, arguments); // 调用原函数

};
() {
     count += 1;
    //window.xxx()的形式调用函数,所以function里的this和window是一回事.
    //所以要用apply的方式调用window的oldParseInt函数,可以写成下方两种形式.
    return oldParseInt.apply(this, arguments); // 调用原函数

…
// 测试:
parseInt('10');
parseInt('20');
parseInt('30');
30
count
3

红枣fly

#6 Created at ... [Delete] [Delete and Lock User]

this应该就是指向的这个Window对象,所以window和this都可以的,但是null应该室友默认值的,用它好一些吧!


  • 1

Reply