如何在子函数中引用父对象?

时间:2017-10-10 18:32:09

标签: javascript

给出这样一个对象:

var MyObj = {
  bar: 10,
  foo: function() {
     alert(MyObj.bar);
  }
}

我如何从MyObj一般引用MyObj.foo,以便在我将var MyObj更改为var MyObj2时,我不需要修改foo功能

2 个答案:

答案 0 :(得分:1)

如果您希望将MyObj视为一个类,您可以执行lumio建议的操作,或者您可以执行类似

的操作
function MyObj(){
    this.bar = 10;
    this.foo = function(){ 
        return this.bar; 
    }
}
var a = new MyObj();
var b = new MyObj();
b.bar = 5;
console.log(a.foo(), b.foo()) // 10 5

如果相反,您只想引用对象的bar值,那么您只需将alert(MyObj.bar);替换为alert(this.bar);

答案 1 :(得分:0)

课程对你有很大的帮助。在ES5中,可以像这样创建类:



function MyObj() {
  this.bar = 10;
}
MyObj.prototype.foo = function() {
  console.log( this.bar );
}

var objInstance = new MyObj;
objInstance.foo();

var objInstance2 = new MyObj;
objInstance2.bar = 20;
objInstance2.foo();




ES6可以提供更好的符号:



class MyObj {
  constructor() {
    this.bar = 10;
  }
  
  foo() {
    console.log( this.bar );
  }
}

var objInstance = new MyObj;
objInstance.foo();

var objInstance2 = new MyObj;
objInstance2.bar = 20;
objInstance2.foo();




使用babel将其转换为ES5。