2015-03-25 79 views
1
function Hero(name) { 
    this.name = name; 
} 
var h = new Hero('Leonardo'); 
var a = h instanceof Hero; 
var b = h instanceof Object;` 

在這裏我可以理解,a將是'真'。但是當我檢查Firefox控制檯時,b也是「真實的」。這是爲什麼發生?對象可以是多種類型的實例嗎?

+0

每個對象只是一個「對象」的實例。 – thefourtheye 2015-03-25 10:43:10

回答

1

一個目的是在其原型鏈的一切的一個實例:

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>

0

正是由於Prototype Inheritance,每ArrayFunction等滿足高達對象爲祖父母/每件事的最終父母

a = []; 
b = function(){} 
a instanceof Object // true 
b instanceof Object // true 
0

在Javascript中,所有n ative函數從基類Object繼承。所以所有對象都是Object的實例。

Check Array,String,都是Object的實例。

JavaScript中的一個必須知道的事實。

相關問題