我從taylormcgann拿起這個例子。在我問我的問題之前,讓我聲明我是JavaScript新手,並且在應對這些概念方面遇到困難。方法與函數調用模式
在我提到的鏈接,這裏的方法調用模式是如何定義的:
var person = {
name: 'Calvin',
age: 25,
greet: function() {
alert('My name is ' + this.name + '.');
}
};
person.greet(); //My name is Calvin.
很公平。 greet()
被定義爲一種方法,並按照這種方式被訪問。現在來函數調用模式:
// Add a new method to person
person.calculateAge = function (yearsFromNow) {
var self = this;
function yearsOld() {
return self.age + yearsFromNow;
}
alert('I will be ' + yearsOld() + ' years old ' + yearsFromNow + ' years from now.');
}
person.calculateAge(10); //I will be 35 years old 10 years from now.
我不明白如何在地球上這成爲函數調用?我可以測試和確定this
對象是指window
,但調用語法與上面相同。這個真的是方法和函數調用模式之間的區別,一個是在對象內部定義的,一個是,種類,外部?我來自C/C++的背景,所以你可以理解這對我來說有多驚人。
任何想法是最受歡迎的。
如果刪除了'yearsOld'功能,只需將值賦值給一個變量,比如'VAR yearsOld = this.age + yearsFromNow',豈不更有意義嗎? – Jhecht 2014-11-24 06:45:48
沒有。我仍然會被'person.calculateAge ='難住。 。 。不能擺脫功能附着在物體上的感覺,因此是一種方法。 :P – dotslash 2014-11-24 07:39:45
這是一種方法。 – Jhecht 2014-11-24 08:08:05