function Hero(name) {
this.name = name;
}
var h = new Hero('Leonardo');
var a = h instanceof Hero;
var b = h instanceof Object;`
在這裏我可以理解,a將是'真'。但是當我檢查Firefox控制檯時,b也是「真實的」。這是爲什麼發生?對象可以是多種類型的實例嗎?
function Hero(name) {
this.name = name;
}
var h = new Hero('Leonardo');
var a = h instanceof Hero;
var b = h instanceof Object;`
在這裏我可以理解,a將是'真'。但是當我檢查Firefox控制檯時,b也是「真實的」。這是爲什麼發生?對象可以是多種類型的實例嗎?
一個目的是在其原型鏈的一切的一個實例:
function Animal() {
}
function Cat() {
}
function Dog() {
}
Cat.prototype = Object.create(Animal.prototype);
Dog.prototype = Object.create(Animal.prototype);
var felix = new Cat();
snippet.log("Felix");
snippet.log("Object - " + (felix instanceof Object));
snippet.log("Animal - " + (felix instanceof Animal));
snippet.log("Cat - " + (felix instanceof Cat));
snippet.log("Dog - " + (felix instanceof Dog));
snippet.log("-----------");
var spike = new Dog();
snippet.log("Spike");
snippet.log("Object - " + (spike instanceof Object));
snippet.log("Animal - " + (spike instanceof Animal));
snippet.log("Cat - " + (spike instanceof Cat));
snippet.log("Dog - " + (spike instanceof Dog));
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
正是由於Prototype Inheritance
,每Array
,Function
等滿足高達對象爲祖父母/每件事的最終父母
a = [];
b = function(){}
a instanceof Object // true
b instanceof Object // true
在Javascript中,所有n ative函數從基類Object繼承。所以所有對象都是Object的實例。
Check Array,String,都是Object的實例。
JavaScript中的一個必須知道的事實。
每個對象只是一個「對象」的實例。 – thefourtheye 2015-03-25 10:43:10