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. Article是否與EntryId相同?
- 3. 是string.IsNullOrEmpty是否與String.IsNullOrEmpty相同?
- 4. 這是str_replace是否與此preg_replace相同?
- 5. 是否存在與Marklogic相同的liquibase
- 6. Object.getPrototypeOf與__proto__
- 7. 是否有與CSS/sass相當的JavaScript
- 8. 是否x - > y在c中與x.y在c#/ java中相同?
- 9. 是否window.location()與GET請求相同?
- 10. 是否有與.NET相同的JGroups
- 11. 是否有與iPhone SDK相同的CoreText?
- 12. 是否有與Petapoco相同的Scala?
- 13. Cookie是否與主鍵相同?
- 14. 是否有與Ruby相同的Stylecop?
- 15. [NSMutableString string]與[[NSMutableString string] autorelease]是否相同?
- 16. 是否縮進與Whitespacing相同?
- 17. 是否有與Mac相同的posh-git?
- 18. Octave與iPython的「!」是否相同?
- 19. VFP uniqueidentifier是否與Guid相同?
- 20. Bash:$ {@:2}是否與$ 2相同?
- 21. 是否有與UniBASIC LOCATE相同的UniObjects?
- 22. 使用Pattern.LITERAL是否與Pattern.quote相同?
- 23. 是否與* 0.5相同?1(>> 1)
- 24. int是否與unsigned或signed相同?
- 25. 是否有與Windows相同的EDQUOT?
- 26. 是否有與NSDecimalNumber相同的RoundHalfUp?
- 27. 是否有與@Assisted相同的javax.inject。*
- 28. 檢查2個XML文檔是否與javascript相同
- 29. Javascript「shift」與「拼接」 - 這些陳述是否相同?
- 30. 打字稿/ javascript是否具有與C#相同的@「\」?
您可以upvote有用的問題和答案,並接受解決您自己的問題的答案。這有助於組織SO,對幫助你的人也是一個小小的回報。 – hugomg
@missingno他迄今爲止的問題很有趣,雖然... –
@ŠimeVidas:他仍然值得「0%」樣板評論,雖然:P – hugomg