如何在使用对象语法定义的对象中调用兄弟方法?

Sys*_*ral 22 javascript

这该怎么做?

var obj = {
 func1 : function(){
   // Do stuff 
 },
 func2 : function(){
  func1();  // does not work
  this.func1();  // does not work
 }
}
Run Code Online (Sandbox Code Playgroud)

编辑:错过了分号

小智 23

var obj = {
 func1 : function(){
   // Do stuff 
 },
 func2 : function(){
  obj.func1();  // It works fine
 }
}
Run Code Online (Sandbox Code Playgroud)


hvg*_*des 7

如果你想使用'this'关键字,你应该做类似的事情

function obj() {
    this.param = whatever;

}

obj.prototype.method1 = function(){
...
}

obj.prototype.method2 = function(){
    this.method1();
}
Run Code Online (Sandbox Code Playgroud)

您可以在obj函数中声明方法,但最好使用原型,因为它更有效 - 无论您创建多少个obj实例,这些函数只存在一次.如果将函数放在obj构造函数中,则obj的每个实例都有自己的函数副本.javascript做了一些魔术来将方法调用与调用它的对象实例相关联,以确保'this'在上下文中意味着正确的事情