Object.getPrototypeOf(obj)
和obj.constructor.prototype
有什麼不同?還是這兩個引用相同的東西?是Object.getPrototypeOf()是否與Object.constructor.prototype在Javascript中相同?
9
A
回答
9
NO
它返回內部[[Prototype]]
值。
例如:
var o = Object.create(null);
Object.getPrototypeOf(o); // null
o.constructor.prototype; // error
var p = {};
var o = Object.create(p);
Object.getPrototypeOf(o); // p
o.constructor.prototype; // Object.prototype
o.constructor.prototype
只能通過new ConstructorFunction
或您手動設置Prototype.prototype.constructor === Prototype
關係創建的對象。
2
否。特別是,對象的constructor
屬性並不總是設置爲您認爲「正確」的。
其中getPrototypeOf
作品的一個例子,但.constructor.prototype
不會:
function F() { }
F.prototype = {
foo: "bar"
};
var obj = new F();
assert.equal(obj.constructor.prototype, Object.prototype);
assert.equal(Object.getPrototypeOf(obj), F.prototype);
它也沒有爲典型的原型繼承場景:
// G prototypally inherits from F
function G() { }
G.prototype = Object.create(F.prototype);
// or: G.prototype = new F();
var obj2 = new G();
assert.equal(obj2.constructor.prototype, Object.prototype);
assert.equal(Object.getPrototypeOf(obj2), G.prototype);
assert.equal(Object.getPrototypeOf(Object.getPrototypeOf(obj2)), F.prototype);
相關問題
- 1. webapp與CMS - 是否相同
- 2. 是否有與CSS/sass相當的JavaScript
- 3. 使用Pattern.LITERAL是否與Pattern.quote相同?
- 4. 是否有與Windows相同的EDQUOT?
- 5. 是否有與Petapoco相同的Scala?
- 6. VFP uniqueidentifier是否與Guid相同?
- 7. int是否與unsigned或signed相同?
- 8. 是否縮進與Whitespacing相同?
- 9. 是否有與iPhone SDK相同的CoreText?
- 10. Octave與iPython的「!」是否相同?
- 11. 是否有與Ruby相同的Stylecop?
- 12. 是否window.location()與GET請求相同?
- 13. 使用Javascript檢查隨機數是否與上一次相同
- 14. 檢查2個XML文檔是否與javascript相同
- 15. 打字稿/ javascript是否具有與C#相同的@「\」?
- 16. %20和+在http url中是否相同?
- 17. quadprog和frontcon在Matlab中是否相同?
- 18. _AddressOfReturnAddress()在Clang/LLVM中是否相同?
- 19. 如何在JavaScript/PHP中查看2段代碼是否相同?
- 20. 在PHP中是否有與WHEN相同的功能?
- 21. 在「android acitivity Intent」中,「www.website.com」與「http://www.website.com」是否相同?
- 22. 在opencv中是否有與matlab conv2相同的函數?
- 23. 在Eclipse中,是否有與Visual Studio的「Watch」相同的功能?
- 24. ehcache是否在與servlet容器相同的進程中運行?
- 25. 在SystemVerilog中,虛擬類是否與抽象類相同?
- 26. GMT是否和UTC相同?
- 27. UNIX_TIMESTAMP()和time()是否相同
- 28. 是(int *)和(int [])是否相同?
- 29. XHTML ...是否與此相關?
- 30. F#是否與Haskell相當?
您可以upvote有用的問題和答案,並接受解決您自己的問題的答案。這有助於組織SO,對幫助你的人也是一個小小的回報。 – hugomg
@missingno他迄今爲止的問題很有趣,雖然... –
@ŠimeVidas:他仍然值得「0%」樣板評論,雖然:P – hugomg