如果您使用ES6和類,則可以使用instanceof
。
class Animal {
greet() {
// Do nothing.
}
}
class Dog extends Animal {
greet() {
console.log("Woof!");
}
}
class Cat extends Animal {
greet() {
console.log("Meow!");
}
}
let dog = new Dog();
console.log(dog instanceof Animal); // Returns true
console.log(dog instanceof Dog); // Returns true
console.log(dog instanceof Cat); // Returns false
console.log(dog instanceof Object); // Caveat: returns true!
或者在ES5:
function Animal() {
}
Animal.prototype.greet = function() {
// Do nothing
}
function Dog() {
Animal.call(this);
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.greet = function() {
console.log("Woof!");
}
function Cat() {
Animal.call(this);
}
Cat.prototype = Object.create(Animal.prototype);
Cat.prototype.greet = function() {
console.log("Meow!");
}
var dog = new Dog();
console.log(dog instanceof Animal); // Returns true
console.log(dog instanceof Dog); // Returns true
console.log(dog instanceof Cat); // Returns false
console.log(dog instanceof Object); // Caveat: returns true!
注:instanceof
不是一個ES6的特性,但類。您可以使用instanceof
與ES5樣式原型。 see MDN
js是寬鬆打字,您應該使用'employeeType ===「manager」'而不是'employeeType ==「manager」'(REF:https://stackoverflow.com/questions/359494/哪些等於運營商與應該使用在JavaScript比較)爲js寬鬆打字 –
,看看這個:http://blog.jeremymartin.name/2008/03/understanding-loose -typing-in.html –
不確定如何「寬鬆打字」是完全相關的! –