2017-05-04 35 views

回答

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)))

+0

感謝@prasad。現在明白了。 – hdang

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));