javascript 示例化后无法访问内部对象[重复]

rsaldnfx  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(90)
    • 此问题在此处已有答案**:

arrow function and this(2个答案)
20小时前关门了。
我有一段非常简单的代码,其中包含示例化对象,并且我通过原型公开了一些方法。

const MyClass = (function() {
  function MyClass() {
    this._obj = {
      1: 'dfvdfvd'
    };
  }

  function get() {
    return this._obj[1];
  }

  MyClass.prototype.take = () => {
    get.call(this);
  }

  return MyClass;
}());

let x = new MyClass();
console.log(x.take())

但是我一直把_obj当作undefined我在这里错过了什么?

mbzjlibv

mbzjlibv1#

问题是MyClass.prototype.take是一个箭头函数,但是箭头函数没有自己的this(参见MDN),因此this是默认的window,而this._objundefined
另外,确保从MyClass.prototype.take()返回一个值,否则将得到undefined

const MyClass = (function() {
  function MyClass() {
    this._obj = {
      1: 'dfvdfvd'
    };
  }

  function get() {
    return this._obj[1];
  }

  MyClass.prototype.take = function() {
    return get.call(this);
  }

  return MyClass;
}());

let x = new MyClass();
console.log(x.take())

相关问题