调用同一对象的方法

时间:2013-06-20 19:28:35

标签: javascript oop

我有一个带有两个函数的js对象。从mySecondFunction()致电myFirstFunction()的正确方法是什么?应该是this.mySecondFunction()吗?还是MyObject.mySecondFunction()?

我以为我会使用“this”,但如果它在Event处理程序中,那么“this”指的是DOM元素而不是对象:(

var MyObject = {
  firstFunction: function() {
    whatgoeshere???.mySecondFunction();
  },

  secondFunction: function() {
    console.log('Hi!');
  }
}

2 个答案:

答案 0 :(得分:1)

 var MyObject = {
  firstFunction: function() {
    this.mySecondFunction();
  },

  secondFunction: function() {
    console.log('Hi!');
  },
  mySecondFunction: function() {
    alert('Hi!');
  }
}

MyObject.firstFunction();

以上是您打算做的事情

//declaring the constructor  
function MyObject() {  
    this.someProperty = 'whatever';        
}  
// declaring instance methods  
MyObject.prototype = {  
    firstFunction: function () {  
        this.secondFunction();  
    },  
    secondFunction: function () {  
        alert("Cool");  
    }  
};  

var am = new MyObject();    
am.firstFunction(); 

使用原型对象定义类型的方法也是一个好主意,原型对象是构造函数的属性。 this的值将是您尝试初始化的新对象。

答案 1 :(得分:0)

在这种情况下,它是MyObject,因为它不是实例。

如果你做过类似的事情:

var MyObject = function() {
};

MyObject.prototype.firstFunction = function() {
    this.secondFunction();
};

MyObject.prototype.secondFunction = function() {
    console.log('Hi!');
};

var instance = new MyObject();
instance.firstFunction();

然后,您创建一个新实例并可以使用this。换句话说:this引用对象的当前实例