0

我有一个具有两个功能的 js 对象。什么是正确的调用mySecondFunction()方式myFirstFunction()?应该是 this.mySecondFunction() 吗?还是 MyObject.mySecondFunction()?

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

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

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

2 回答 2

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将是您尝试初始化的新对象。

于 2013-06-20T19:52:20.703 回答
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. 换句话说: thethis指的是对象的当前实例

于 2013-06-20T19:29:16.257 回答