[英]Prototype constructor for functions and objects
因此,我一直在大量閱讀有關原型的內容,並且我得到了大部分,我的意思是,我得到了以下內容。
var Animal = function(species) {
this.species = species;
};
Animal.prototype.getSpecies = function() {
return this.species;
}
var myDog = new Animal("Anderson");
alert(myDog.getSpecies());
我什至知道我可以創建一個新物種並將原型設置為Animal,然后能夠調用getSpecies()。 是的
讓我感到困惑的是:
var Person = function(firstName, lastName) {
this.firstName= firstName;
this.lastName= lastName
};
var meToo = { fName: "ken", lName: "N" };
alert(meToo.constructor.prototype); // [object Object]
alert(Person.constructor.prototype); // function Empty(){}
http://jsfiddle.net/r0k3t/s8Sx7/9/
我試圖找到可以解釋為何Person的原型是function(){}的東西? 我認為它將被設置為全局對象“ this”(在本例中為窗口)。 另外-為什么我不能列舉它的屬性? 閱讀這將表明我可以使用Constructor.prototype檢索我認為是“窗口”的對象,然后只枚舉屬性。
很明顯,我缺少一些東西-謝謝!
Person
對象的原型就是Person.prototype
。 不是Person.constructor.prototype
,這是非常不同的:
Person.constructor
是Function
函數,它構造所有函數。 因為Person
是一個函數,所以它的.constructor
是Function
。
Function
對象(所有函數)的原型就是Function.prototype
。 因此, Person.constructor.prototype === Function.prototype
。
普通對象的構造函數是Object
函數。 所有普通對象的原型都是Object.prototype
,它是一個"[object Object]"
(將console.dir
Object.prototype
於alert
,以查看更多信息)。
普通對象是指用{}
或new Object()
創建的任何new Object()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.