js中對象與函數的關系

首先什么是對象?根據W3C上面的解釋JS中所有事物都是對象,對象是擁有屬性和方法的數據,由此可以看出基本值類型不是對象(number、string、Boolean、Undefined),剩下的引用類型(函數、數組、null...)都是對象,也有人說對象是若干屬性的集合。




對象是通過函數創(chuàng)建的,而函數又是一種對象。那么這是為什么呢?這就牽扯到prototype原型。



1、函數是一種對象

function test() {};

console.log(test instanceof Object);? ? //? ? true

很明顯函數是一種對象,但你不能說函數是對象的一種。因為他倆之間是沒有包含關系的。


對象都是通過函數創(chuàng)建的

先來看一個例子

function test() {

? ? this.name="哈哈"};vartest2=new test();

console.log(test2 instanceof Object);? ? //true

這個例子可以說明對象可以被函數創(chuàng)建。那為什么要說對象都是通過函數創(chuàng)建的,那對象字面量是不是也是通過函數來創(chuàng)建的,答案是肯定的,這是一種語法糖方式。舉個簡單的例子


varobj={

? ? name:"哈哈",

? ? age:"18"}varobj=new Object()

obj.name="哈哈";

obj.age="18";

上面的對象字面量其實是通過下面的構造函數來創(chuàng)建的。而其中的Object是一種函數:

console.log(typeofObject)//function

prototype原型??

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容