考慮下面的代碼:如何查看Javascript對象的原型鏈?
function a() {}
function b() {}
b.prototype = new a();
var b1 = new b();
我們能保持這種a
已添加到b
的原型鏈。大。而且,所有的下列條件:
b1 instanceof b
b1 instanceof a
b1 instanceof Object
我的問題是,如果我們不知道提前b1
起源?我們如何發現其原型鏈的成員?理想情況下,我想要一個像[b, a, Object]
或["b", "a", "Object"]
這樣的數組。
這可能嗎?我相信我在SO的某個地方看到了一個答案,它描述瞭如何發現這一點,但我不能爲了我的生活再次找到答案。
'constructor'爲您提供了最近的原型祖先的構造函數,它沒有從另一個構造函數原型繼承。這幾乎從來都不是你想要的。例如在問題的代碼中,'b1.constructor'是'a',而不是'b',如果你從'b'派生出一個對象'c','c1.constructor'仍然是'a'。正常的經驗法則:不要對任何事情使用'constructor'。 [eta:lol @'害怕和孤獨'...是的,這是JavaScript中的一個部分,它旨在通過做一些看起來有用但實際上是陷阱的東西來混淆你的地獄。] – bobince 2010-02-11 16:08:34
是的,我考慮原始問題是一個有趣的練習,但這絕不是我想要實際工作的代碼。這裏有一個非常好的解釋:http://mckoss.com/jscript/object。htm – Pointy 2010-02-11 16:17:37