簡體   English   中英

函數和對象的原型構造函數

[英]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.constructorFunction函數,它構造所有函數。 因為Person是一個函數,所以它的.constructorFunction

Function對象(所有函數)的原型就是Function.prototype 因此, Person.constructor.prototype === Function.prototype

普通對象的構造函數是Object函數。 所有普通對象的原型都是Object.prototype ,它是一個"[object Object]" (將console.dir Object.prototypealert ,以查看更多信息)。

普通對象是指用{}new Object()創建的任何new Object()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM