Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重写Object.prototype.get以防止大型应用程序中出现空检查问题_Javascript_Angular_Ionic2_Undefined - Fatal编程技术网

Javascript 重写Object.prototype.get以防止大型应用程序中出现空检查问题

Javascript 重写Object.prototype.get以防止大型应用程序中出现空检查问题,javascript,angular,ionic2,undefined,Javascript,Angular,Ionic2,Undefined,我意识到JS社区并不推荐这样做,但我认为有一个很好的用例可以覆盖Object.prototype,这样访问未定义对象的属性就会返回未定义的,而不是抛出应用程序崩溃错误 背景资料很少: 使用大型应用程序(大约20万行代码) 应用程序是极其可配置的,有大量的选项-没有办法测试每一种可能性 Angular 2/Ionic 2项目 基本上,我希望使以下代码控制台记录“未定义”,而不是生成错误: 伪代码: Object.defineProperty(Object.prototype, Object.pro

我意识到JS社区并不推荐这样做,但我认为有一个很好的用例可以覆盖Object.prototype,这样访问未定义对象的属性就会返回未定义的,而不是抛出应用程序崩溃错误

背景资料很少:

  • 使用大型应用程序(大约20万行代码)
  • 应用程序是极其可配置的,有大量的选项-没有办法测试每一种可能性
  • Angular 2/Ionic 2项目
  • 基本上,我希望使以下代码控制台记录“未定义”,而不是生成错误:

    伪代码:

    Object.defineProperty(Object.prototype, Object.prototype.get, (val) => {
      try {
        console.log(val);
      } catch (e) {
        console.log('Attempted to access undefined property');
      }
    });
    
    const obj = {
      a: 'b'
    };
    
    console.log(obj.a.b.c); // should log undefined but actually generates an app freezing issue
    
    问题:

    我怎样才能做到这一点?有没有其他方法可以在不添加太多代码的情况下防止整个应用程序中出现空检查错误?是否有一个通用的修复程序,使这些空检查错误不会使Angular/Ionic应用程序崩溃