前端js Object.defineProperty导致的不停刷屏


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
</html>
<script type="text/javascript">
    console.log(Object.getOwnPropertyDescriptor(Function,'property'))
    function f1(){}
    Object.defineProperty(Function.prototype,'call',{
        
            value:f1,
            writbale:true,
            enumerable:false,
            configurable:true
        
        
    })
    console.log(Object.getOwnPropertyDescriptor(Function.prototype,'call'))
    
</script>

把value换成数字或者别的不是函数的对象 就报错 也不时的刷屏 幅度较小

livereload.js?snipver=1:637 Uncaught TypeError: __indexOf.call is not a function

换成f1就不挺的刷屏 幅度很大 连复制粘贴都不能做 没报错 输出

01.html:11 {writable: true, enumerable: false, configurable: true, value: ƒ}
01.html:22 {writable: true, enumerable: false, configurable: true, value: ƒ}
livereload.js?snipver=1:351 LiveReload protocol error (no supported protocols found) after receiving data: "undefined"..

如果把call改成别的就不会出错
在nodejs里 是正常的

我这里试着没有什么问题。

代码:

<script type="text/javascript">
    function f1() {}
    Object.defineProperty(Function.prototype, 'call', {
        value: f1,
        writbale: true,
        enumerable: false,
        configurable: true
    })
    console.log([Function]); // 打印这个
    console.log(Object.getOwnPropertyDescriptor(Function.prototype, 'call'))
</script>

运行效果:

img

有影响的话估计是因为改了默认的call方法,造成其他地方调用call报了错误。
但是看你上下文好像也没有其他的代码,有点奇怪。


Object.defineProperty(Function.prototype, 'bind', {
            value: f1,
            writbale: true,
            enumerable: false,
            configurable: true
        })

没问题 其他的几个方法都可以重写 好像就这个call比较特殊出现刷屏

你是用什么编辑器呢?有些编辑器用自带服务运行文件会在文件后面增加脚本,估计是这个脚本造成的。