javascript oop私有方法访问公共属性

javascript oop私有方法访问公共属性,javascript,oop,Javascript,Oop,我是js oop新手,我尝试从私有方法'b(){}'访问公共属性 但它显示的是未定义的 和我也希望从外部改变这个属性,但是考虑对象在我改变属性值之前将首先构造,任何人如何修复这个属性?< /P> < P> > < >绑定与您定义函数的位置无关,所有与调用函数的方式有关。 在本例中,您将函数作为常规函数调用,这意味着此将绑定到全局对象(或在严格模式下未定义的)此绑定的方式与定义函数的位置以及调用函数的方式无关 在您的情况下,您将函数作为常规函数调用,这意味着此将绑定到全局对象(或未定义的在严格模

我是js oop新手,我尝试从私有方法'b(){}'访问公共属性

但它显示的是未定义的


和我也希望从外部改变这个属性,但是考虑对象在我改变属性值之前将首先构造,任何人如何修复这个属性?< /P> < P> > < <代码> >绑定与您定义函数的位置无关,所有与调用函数的方式有关。


在本例中,您将函数作为常规函数调用,这意味着
将绑定到全局对象(或
在严格模式下未定义的

此绑定的方式与定义函数的位置以及调用函数的方式无关


在您的情况下,您将函数作为常规函数调用,这意味着
将绑定到全局对象(或
未定义的
在严格模式下)。

我用ECMA6语法为您重写了它,以便更容易阅读,并更正了它:

function foo(){
    this.a = 123;

    b();

    function b(){
        alert(this.a);//undefined
    }
}


var o = new foo();
o.a = 456;

我用ECMA6语法为您重写了它,以便更容易阅读,并更正了它:

function foo(){
    this.a = 123;

    b();

    function b(){
        alert(this.a);//undefined
    }
}


var o = new foo();
o.a = 456;

prototype
用于在
javascript
中创建类及其方法。我根据native
javascript
修改了您的示例:

class foo {
  constructor() {
    this.a = 123;
    this.b();
  }

  b() {
    alert(this.a);
  }
}


var o = new foo();
o.a = 456;

prototype
用于在
javascript
中创建类及其方法。我根据native
javascript
修改了您的示例:

class foo {
  constructor() {
    this.a = 123;
    this.b();
  }

  b() {
    alert(this.a);
  }
}


var o = new foo();
o.a = 456;

如果你想学习javascript。。这家伙有很棒的视频。检查这里:看起来您试图在构造函数内声明函数或其他东西。。这家伙有很棒的视频。检查这里:看起来您试图在构造函数内声明函数或其他东西。