function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Person.prototype.talk = function() {
return this.firstName + " " + this.lastName;
}
//creating a Person object for extension
var manager = new Person('jon', 'doe');
console.log(manager.talk());
//Manager prototype..but doesn't inherit Person methods
function Manager(firstName, lastName, accessCode) {
//shared properties
this.firstName = firstName;
this.lastName = lastName;
this.accesscode = accessCode;
}
function personChecker(person) {
var returnCode = 0;
if (person instanceof Person) {
returnCode = 1;
}
else if (person instanceof Manager) {
returnCode = 2;
}
return returnCode;
}
console.log(personChecker(manager));
是否可以共享原型並具有不同的構造函數?我想有經理從Person繼承一切(然後擴展它),並且對原型的功能開關,並做視不同的東西傳遞給personChecker
功能使用JavaScript的原型繼承鏈
是的,這是可能的,但'instanceof'可能無法正常工作。你究竟想要做什麼?這個「功能開關」聽起來不太好。你確定你不想「子類」人嗎? – Bergi
@Bergi我想要一些功能,我有一個方法,可以採取一個經理,看門人和總統對象,從Person繼承。我應該如何區分這些類型?我應該使用'hasOwnProperty'而不是切換原型嗎? – wootscootinboogie
從Person繼承三次聽起來像是正確的事情 - 但他們沒有相同的原型(「分享」)。通過調用他們自己的方法來區分這些實例還是通過實例來檢查它們應該是另一個問題。 – Bergi