這裏是我的示例代碼的JavaScript protyping - 差異
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype = {
constructor: Person,
printInformation: function() {
console.log(this.toString());
},
toString: function() {
return "Name: " + this.name + ", Age: " + this.age;
}
};
var person1 = new Person("Some Name", 15);
person1.printInformation();
console.log(typeof(person1));
console.log(Object.getPrototypeOf(person1) === Object.prototype);
var book = {
title: "Some book",
author: "Some author",
printInformation: function() {
console.log(this.toString());
},
toString: function() {
return "Book: " + this.title + ", Author(s): " + this.author;
}
};
book.printInformation();
var bookPrototype = Object.getPrototypeOf(book);
console.log(typeof(book));
console.log(Object.getPrototypeOf(book) === Object.prototype);
輸出:
Name: Some Name, Age: 15
object
false
Book: Some book, Author(s): Some author
object
true
爲什麼Object.getPrototypeOf(person1) === Object.prototype
返回假,而Object.getPrototypeOf(book) === Object.prototype
回是真的嗎?
兩者都是對象的實例,都指向原型,我希望它們都應該返回true。請賜教。
感謝您的快速響應。第二部分呢。 「另外,開發人員在使用」函數「還是使用JSON格式創建類之間有優先選擇嗎?除了可讀性之外,優點/缺點是什麼?」 –
@KrishnanSriram:爲了在一個對象上實現你自己的方法,你應該使用一個構造函數,這樣你就不會擴展Object.prototype,除非你完全意識到分支。其他語法不一定是JSON語法。它是對象的字面語法,對於不需要增強的普通對象很有用,但是如果有一點點初始化操作,構造函數也可以用到。 – 2015-12-15 00:36:20
@KrishnanSriram這是一個主要基於觀點的問題,因此是堆棧溢出的主題,所以我從主要問題中刪除了該部分。另外,一次只問一個問題,而不是多個問題。 – Oriol