【js基础】理清Object、Object.prototype、Function、Function.prototype
上面這段代碼一般被用來判斷變量的類型,相信很多人都非常熟悉
今天coding時用到上面這段代碼,突然想到 Object.toString 方法,為啥兩者不一樣呢
Object 的 toString 并不是自有屬性,而是繼承屬性
那 Object 究竟時繼承的誰呢,或者換句話說,Object 時由什么構造的呢?
為啥運行上面這段代碼會提示 Function.prototype.toString requires that 'this' be a Function
console.log(Object.__proto__.constructor) // ? Function() { [native code] } Object.toString === Function.prototype.toString // true Object.__proto__ === Function.prototype // true Object instanceof Function // true原來執行 Object.toString.call([]) 等同于執行 Function.prototype.toString([])
而且 Object 是由 Function 構造的
那么 Function 又是由什么構造的呢
我們看到 Function 是由 Function 構造的
那么是不是說 Function 就是繼承鏈的最頂層了呢? 答案肯定是 不是
我們看到, Function.prototype 的 _proto__ 指向了 Object.prototype
我們之前說過, Function 繼承自 Function ,自然 Function.__proto__.__proto__ 是指向 Object.prototype 的
我們之前也說過, Object 繼承自 Function,所以Object.__proto__.__proto__ 也是指向 Object.prototype 的
總結
以上是生活随笔為你收集整理的【js基础】理清Object、Object.prototype、Function、Function.prototype的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PLSQL重点问题理解和实战
- 下一篇: j2se学习中的一些零碎知识点2之基础知