2012-12-04 104 views
0

爲什麼它不工作,它說它不是一個函數,爲什麼我不能從myalert2調用myalert()?怎麼做??如何調用內部函數?

var sheepclass = function(handler) { 
    this.handler = $.extend({ 
     'sizes': 'thin', 
     'eat': 'grass', 
     'color': 'white', 
     myalert: function() { 
      alert('Hello World'); 
     }, 
     myalert2: function() { 
      handler.myalert(); 
      this.handler.myalert(); //this not work either 
     } 
    }, handler); 
} 
var blacksheep = new sheepclass({ 
    'color': 'black' 
}); 
blacksheep.handler.myalert2(); 

回答

0

這是因爲範圍的...

http://jsfiddle.net/78QXc/

var sheepclass = function(handler) { 
    this.handler = $.extend({ 
     'sizes': 'thin', 
     'eat': 'grass', 
     'color': 'white', 
     myalert: function() { 
      alert('Hello World'); 
     }, 
     myalert2: function() { 
      this.myalert(); 
     } 
    }, handler); 
} 
var blacksheep = new sheepclass({ 
    'color': 'black' 
}); 
blacksheep.handler.myalert2();​ 
0

只需撥打this.myalert()會做

+0

哇,是的,爲什麼呢?它應該是handler.something,我把所有內部變成handler.size,hander.xxx()然後我必須將它們全部更改爲...奇怪... – FatDogMark

+0

您正在擴展處理程序對象,並且'this'實際上指的是處理程序對象本身。所以你不必編寫'this.handler'。 – Stanley