1

有一个对象A:

function A(){
    this.Avar = 'hello';
}
A.prototype.breadcrumb = {
    push: function(){
        console.info(this.Avar);
    }
};
var a = new A();

我想添加一个breadcrumb对象,使用new A().breadcrumb.push,但是打印出来的this是{push: ...}对象,而不是A对象,我该怎么改造让他读的是A对象的上下文?

4个回答

2

已采纳
function A() {
  this.Avar = 'hello'
}
A.prototype.breadcrumb = function() {
  const ctx = this
  return {
    push: function() {
      console.log(ctx.Avar)
    }
  }
}

new A().breadcrumb().push()
2

在不依赖实例的情况下是有方法的。
不过不确定你的需求是什么,如果仅仅是个链式操作可以这样。

"use strict";

function A(){
  this.Avar = 'hello';
}
A.prototype.breadcrumb = function() {
  return {
    push: () => {
      console.log(this.Avar);
    }
  };
};

new A().breadcrumb().push(); // 'hello'
0

在push上加一个let _this=this;

后面全用_this代替this就行了

0

function A(){

this.Avar = 'hello';
var self = this;
this.breadcrumb = {
    push:function(){
        console.log(self.Avar);
    }
};

}
var aa = new A();
aa.breadcrumb.push();

撰写答案