亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教一下,javascript中Function 與Object的關系?

請教一下,javascript中Function 與Object的關系?

叮當貓咪 2021-02-17 19:15:07
javascript中Function 與Object的關系
查看完整描述

2 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

  1. javascript中,“函數”(方法)也是對象。

  2. 一切對象都有一個根源。它是Object.prototype。

  3. 根源之上再沒有其他根源。Object.getPrototypeOf(Object.prototype)是null。js中除字面量以外的一切引用對象都來自這個“根源”對象。

  4. 表達式Object.getPrototypeOf(Function) === Function.prototype的結果是真。這是Function特有的。實際上Function的prototype是一個內置函數,一切函數都派生自這個內置函數,這個內置函數是一個函數工廠。這個內置函數對象的prototype指向“根源”對象。

  5. 表達式Object.prototype === Object.getPrototypeOf(Function.prototype)的結果是真。說明了Object跟Function二者之間的聯系,是通過“根源”對象聯系起來的。



Function和Object,既是函數,因為都可以Function()或者Object()這樣的方式執行,又是對象,因為可以Function.a = 'a',Object.a = 'a'這樣賦值。


說它們是函數,是因為他們都是通過上面第4條中說的”內置函數工廠“,派生出來的,因而具備函數的特性。


說他們是對象。是因為他們都是通過上面第1條中的”根源“對象,派生出來的,因此具備對象的特征。


繼續說一下,Function.prototype指向”內置函數“。而Object.prototype指向”根源對象“。

因而new Function會產生一個匿名函數,而new Object產生一個plain object。


他們之間的關系簡單描述就像下面這樣。



查看完整回答
反對 回復 2021-03-18
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

一、從定義的角度來說:
function Function(){}
前者為定義一個js函數
后者為這個函數的名稱
Object為選擇的DOM對象

二、從用法講:
var a = new Object(function(){});
這里a也是function了。

三、總結:
不管是function ,還是new Function(), 還是new Object(function(){}),當解釋器(例如V8)遇到時,則將它們初始化成一個函數(最主要的是給其添加了一個[[call]]屬性)。



查看完整回答
反對 回復 2021-03-18
  • 2 回答
  • 0 關注
  • 449 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號