術語constructor function
或object constructor
是指所有的代碼在你person
功能預計此代碼將與一起使用0運算符,因此它將被賦予一個新的對象,this
指向。這是一個JavaScript中的功能,旨在以某種方式使用。
值得理解的是,Javascript中的構造函數僅僅是一個普通日常函數,它被設計爲構造函數,並且被設計爲用new
運算符調用。因爲它的設計是用new
運算符來調用的,所以它假定給它一個品牌令人滿意的新對象this
指向。
構造函數內部的代碼只需要做正確初始化對象所需的代碼。這可能是從無到有的頁面和代碼頁 - 這完全取決於應用程序。
構造函數的另一個強大的方面是你可以爲它們分配一個原型,並且通過這樣做,當JS引擎在傳遞它之前創建初始對象時,告訴JS引擎什麼樣的默認屬性關閉構造函數。
所以,在你的榜樣:
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor
}
您可以添加一些方法的原型:
Person.prototype = {
getFullName: function() {
return this.firstName + " " + this.lastName;
},
incrementAge: function() {
++this.age;
}
};
現在,當你創建一個新的Person
對象(我已經切換到大寫的是在Javascript中使用構造函數的慣例),您將得到一個具有代碼在您的構造函數中指定的屬性的對象,但它也將具有分配給原型的方法。
var p = new Person("Ted", "Williams", 39, "blue");
var fullname = p.getFullName(); // returns "Ted Williams"
它一般是在Javascript更有效地使用的原型的方法,而不是由一個在構造函數中分配各方法之一,並提供原型一個用於繼承了。
這是一個構造函數,當你創建一個'new'實例時它就成爲一個Object。 – PHPglue 2014-08-28 01:31:38
按照慣例,構造函數名是大寫的,就像'Person'。這是一種記住在調用它時必須使用'new'的方法。 – Oriol 2014-08-28 01:32:10
你也可以創建一個Object類型的new實例,如:if(!Object.create){Object.create = function(o){function F(){}; F。原型= o;返回新的F;}};'。現在只需使用var pers = {prop:'value'},newPers = Object.create(pers);'。當然,你不能將參數傳遞給對象。 – PHPglue 2014-08-28 01:44:06