我有以下的JavaScript代碼段。由於 的Javascript getPrototypeOf不返回父原型
0
A
回答
1
它也person
。但人是object.its不alert()
顯示與console.log()
嘗試。如果你需要警惕的使用與展示與JSON.stringify()
How can I view an object with an alert()
var alien = {
kind: "alien"
};
var person = {
kind: "human"
};
var zack = Object.create(person);
console.log(Object.getPrototypeOf(zack));
alert(JSON.stringify(Object.getPrototypeOf(zack)))
1
試試看。我清理了一下代碼,並使用了以大寫字母開頭的標準命名約定。同樣使用控制檯進行日誌記錄,昨天發出警報。
// Define the Alien class, always start with an uppercase
var Alien = function() {
};
// Setup it's prototype
Alien.prototype = {
kind: 'alien',
grab: function() {
return 'grabby grab';
}
}
// Define a Person class
var Person = function() {
this.kind = "human";
};
// Copy Alien prototype to Person
Person.prototype = Object.create(Alien.prototype);
// Create a new instance of of Person
var zack = new Person();
// See what's inside
console.log('Prototype function call: ' + zack.grab());
console.log('Zack is a: ' + zack.kind);
console.log('Zack is secretly a: ' + Object.getPrototypeOf(zack).kind);
console.log(Object.getPrototypeOf(zack));
0
的屏幕截圖是示出由Object.prototype.toString
方法返回的文本。該方法被稱爲自動如果一個對象,通過構建Object
,需要將其轉換爲文本:
console.log({} + ""); // automatic convertion
console.log({}.toString()); // explicit convertion
它是什麼不說法是,zack
原型爲對象。如果您想了解更多關於對象的信息,您可以使用JSON.stringify
來創建其所有非函數值屬性及其值的字符串列表。 (JSON.stringify
設計忽略函數值的屬性。)
你也可以使用相等運算符來測試一個對象是另一個相同,如:
var alien = {
kind: "alien"
};
var person = {
kind: "human"
};
var zack = Object.create(person);
console.log("zack is prototyped on person: "
+ (Object.getPrototypeOf(zack) === person)
);
1
你看到的原因[對象對象]是因爲當你提醒Object.getPrototypeOf(zack)
時,對象需要轉換爲字符串才能顯示在警報中。現在,正在調用默認的toString()方法Object.prototype.toString
,該方法返回對象的字符串表示形式。如果您希望在警報中真正顯示一些有意義的文本,則需要在person
對象本身上實施toString
方法。這樣做會顯示在toString()函數中實現的自己的文本。這種情況發生的原因是javascript中的函數查找方式。首先,對象被查看,然後是原型,然後再進入原型鏈。由於在這種情況下,查找會在對象級本身成功,因此不會調用Object.prototype.toString
函數,並且您會在alert
框中看到自己的文本。
var alien = {
kind: "alien"
};
var person = {
kind: "human"
};
person.toString = function() {
\t return "I am '"+this.kind+"' kind of object";
}
var zack = Object.create(person);
alert(Object.getPrototypeOf(zack));
相關問題
- 1. 的Javascript原型和__proto__和getPrototypeOf問題
- 2. Javascript對象返回原型
- 3. JavaScript的原型 - 不叫它的父母
- 4. javascript中原型函數的返回值
- 5. 原型Ajax.Request永不返回
- 6. BindAsEventListener不返回在原型
- 7. 爲什麼getPrototypeOf()在JavaScript中返回不正確的構造函數?
- 8. 原型繼承返回值
- 9. 函數返回父原型的命名建議
- 10. 的Javascript原型回調
- 11. 在父函數原型中使用原型的Javascript函數
- 12. Javascript中原型對象的原型(父類)?
- 13. 擴展返回父類型
- 14. 原型方法返回「undefined」
- 15. Javascript:不同的返回類型
- 16. javascript原型鏈接 - 得到父母的父母
- 17. 未通過工廠返回的JavaScript對象原型
- 18. 原型選擇返回對象
- 19. 優點/不使用原型鏈和返回對象,而不是
- 20. 調用父原型
- 21. JavaScript的子函數通過返回父函數返回
- 22. Javascript中的Constructer不返回原型函數傳遞的正確值
- 23. JavaScript的原型
- 24. JavaScript的原型
- 25. 的Javascript原型
- 26. javascript:帶回調的原型和'this'
- 27. JavaScript關聯數組訪問返回「literal」數組原型代碼
- 28. Javascript原型函數返回函數拋出錯誤
- 29. JavaScript多種返回類型
- 30. Javascript和MVC返回類型
感謝@prasad。現在明白了。 – hdang