code: function ensureSafeMemberName(name, fullExpression) {
    if (name === "__defineGetter__" || name === "__defineSetter__"
        || name === "__lookupGetter__" || name === "__lookupSetter__"
        || name === "__proto__") {
      throw $parseMinErr('isecfld',
          'Attempting to access a disallowed field in Angular expressions! '
          + 'Expression: {0}', fullExpression);
    }
    return name;
  }
docs: Sandboxing Angular Expressions ------------------------------ Angular expressions are generally considered safe because these expressions only have direct access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by obtaining a reference to native JS functions such as the Function constructor.  As an example, consider the following Angular expression:  {}.toString.constructor('alert("evil JS code")')  This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits against the expression language, but not to prevent exploits that were enabled by exposing sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good practice and therefore we are not even trying to protect against interaction with an object explicitly exposed in this way.  In general, it is not possible to access a Window object from an angular expression unless a window or some DOM object that has a reference to window is published onto a Scope. Similarly we prevent invocations of function known to be dangerous, as well as assignments to native objects.  See https://docs.angularjs.org/guide/security