日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【js基础】理清Object、Object.prototype、Function、Function.prototype

發布時間:2025/6/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【js基础】理清Object、Object.prototype、Function、Function.prototype 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Object.prototype.toString.call(something)

上面這段代碼一般被用來判斷變量的類型,相信很多人都非常熟悉
今天coding時用到上面這段代碼,突然想到 Object.toString 方法,為啥兩者不一樣呢
Object 的 toString 并不是自有屬性,而是繼承屬性
那 Object 究竟時繼承的誰呢,或者換句話說,Object 時由什么構造的呢?

Object.toString.call([])

為啥運行上面這段代碼會提示 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 又是由什么構造的呢

console.log(Function.__proto__.constructor) // ? Function() { [native code] }

我們看到 Function 是由 Function 構造的
那么是不是說 Function 就是繼承鏈的最頂層了呢? 答案肯定是 不是

Function.prototype.__proto__ === Object.prototype // true Function.__proto__.__proto__ === Object.prototype // true Object.__proto__.__proto__ === Object.prototype // true Function.prototype.constructor === Object // false

我們看到, 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。