Javascript:在嵌套范围内访问/绑定父上下文/此

Javascript:在嵌套范围内访问/绑定父上下文/此,javascript,Javascript,示例代码: render:function(){ this.getAsyncData(函数(){ this.specialFunction=(函数(){ //再次进行嵌套调用 }.约束(这个); this.specialFunction(); }.约束(这个); } 这里有一些方法- 使用bind()方法 使用var self=this然后在内部使用self 请列出访问父上下文的所有其他可能方式。在ES6中,如果您想保持相同的上下文,可以使用fat箭头 它等于ES6代码: function P

示例代码:

render:function(){
this.getAsyncData(函数(){
this.specialFunction=(函数(){
//再次进行嵌套调用
}.约束(这个);
this.specialFunction();
}.约束(这个);
}
这里有一些方法-
  • 使用
    bind()
    方法
  • 使用
    var self=this然后在内部使用self

  • 请列出访问父上下文的所有其他可能方式。

    在ES6中,如果您想保持相同的上下文,可以使用fat箭头

    它等于ES6代码:

    function Person() {
      this.age = 0;
    
      setInterval(() => {
        this.age++; // |this| properly refers to the person object
      }, 1000);
    }
    
    var p = new Person();
    
    它等于ES5代码:

    function Person() {
      var _this = this;
    
      this.age = 0;
    
      setInterval(function () {
        _this.age++; // |this| properly refers to the person object
      }, 1000);
    }
    
    var p = new Person();
    
    您可以在此处阅读有关箭头函数的更多信息

    在Angular中,您可以使用
    vm
    更好地处理作用域并避免嵌套作用域的问题。它可以添加
    控制器作为
    语法

    通过使用此功能,您可以在不使用$scope.$parent的情况下访问所需的任何范围。它还提供了更好的可读性,使代码更容易理解

    <div ng-controller="ShopController as shop">
      <p>{{ shop.name }}</p>
      <div ng-controller="CustomerController as customer">
        <p>{{ shop.address }}</p>
        <p>{{ customer.address }}</p>
      </div>
    </div>
    
    
    {{shop.name}

    {{shop.address}

    {{customer.address}


    您可以在这里阅读更多内容

    在ES6中,如果希望保持相同的上下文,可以使用fat箭头

    它等于ES6代码:

    function Person() {
      this.age = 0;
    
      setInterval(() => {
        this.age++; // |this| properly refers to the person object
      }, 1000);
    }
    
    var p = new Person();
    
    它等于ES5代码:

    function Person() {
      var _this = this;
    
      this.age = 0;
    
      setInterval(function () {
        _this.age++; // |this| properly refers to the person object
      }, 1000);
    }
    
    var p = new Person();
    
    您可以在此处阅读有关箭头函数的更多信息

    在Angular中,您可以使用
    vm
    更好地处理作用域并避免嵌套作用域的问题。它可以添加
    控制器作为
    语法

    通过使用此功能,您可以在不使用$scope.$parent的情况下访问所需的任何范围。它还提供了更好的可读性,使代码更容易理解

    <div ng-controller="ShopController as shop">
      <p>{{ shop.name }}</p>
      <div ng-controller="CustomerController as customer">
        <p>{{ shop.address }}</p>
        <p>{{ customer.address }}</p>
      </div>
    </div>
    
    
    {{shop.name}

    {{shop.address}

    {{customer.address}


    您可以在此处阅读更多内容

    这取决于您的需求<代码>绑定
    self
    处理更多的用例,但是
    self
    通常使用更少的内存。没有“最好”的方法,这完全取决于你的需求<代码>绑定比
    self
    处理更多的用例,但是
    self
    通常使用更少的内存。并没有“最佳”的方法。这并不能解决这个问题。我在ES6中添加了一句关于胖箭头的句子,但这个问题非常笼统,所以我认为最好用角度来写范围。它仍然不能解决这个问题。具体来说,它询问在一般情况下访问父作用域的最佳方式。关于箭头函数你是对的,但是你的大部分答案是关于如何在Angular中使用父作用域,这不是这个问题的重点。我为ES6 arrow函数添加了更多信息和代码示例。这并不能解决这个问题。我在ES6中添加了一句关于胖箭头的句子,但这个问题非常笼统,所以我认为用Angular编写作用域会很好。它仍然没有解决这个问题。具体来说,它询问在一般情况下访问父作用域的最佳方式。关于arrow函数你是对的,但是你的大部分答案都是关于如何在Angular中使用父作用域,这不是这个问题的内容。我为ES6 arrow函数添加了更多信息和代码示例。