猿问

js如何获取正确的this?

有一个对象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对象的上下文?


一只名叫tom的猫
浏览 1624回答 4
4回答

慕码人8056858

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

慕侠2389804

在不依赖实例的情况下是有方法的。不过不确定你的需求是什么,如果仅仅是个链式操作可以这样。"use strict";function A(){  this.Avar = 'hello';}A.prototype.breadcrumb = function() {  return {    push: () => {      console.log(this.Avar);    }  };};new A().breadcrumb().push(); // 'hello'

米脂

function A(){this.Avar = 'hello';var self = this;this.breadcrumb = {    push:function(){        console.log(self.Avar);    }};}var aa = new A();aa.breadcrumb.push();
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答