摘要:問題引入分析某源碼的時候看到這樣一段代碼,突然一個問題萌發(fā)了中對象與函數(shù)到底有什么樣的關(guān)系首先看幾段代碼結(jié)論函數(shù)是一種對象結(jié)論是一種函數(shù)結(jié)論對象又可以通過函數(shù)來創(chuàng)建根據(jù)的解釋中所有事物都是對象,這樣以來都已經(jīng)繞暈了。
問題引入:new Function("msg","alert(msg)");
分析某源碼的時候看到這樣一段代碼,突然一個問題萌發(fā)了:js中對象與函數(shù)到底有什么樣的關(guān)系;
首先看幾段代碼:
function test() {}; console.log(test instanceof Object); // true
結(jié)論:函數(shù)是一種對象
typeof Object; // function
結(jié)論:Object是一種函數(shù)
function test() { this.name="test" }; var obj = new test();
結(jié)論:對象又可以通過函數(shù)來創(chuàng)建
根據(jù)W3C的解釋JS中所有事物都是對象,這樣以來都已經(jīng)繞暈了。
其實(shí)后來仔細(xì)回味想想他們之前并沒有矛盾:
前提條件,函數(shù)是一種特殊的對象,每次加圓括號時可以調(diào)用一段代碼段;
js給我們提供了兩個函數(shù)
1.Function,讓我們來創(chuàng)造函數(shù)(特殊的對象) 如 new Funtion();
2.Object,讓我們來創(chuàng)造普通的對象, 如 new Object();
Function中有個屬性prototype 所有函數(shù)的__proto__ 屬性都指向改屬性 如:
function test() {}; test.__proto__ === Function.prototype; test.__proto__... === Object.prototype; Object.__proto__ === Function.prototype;
結(jié)論一:實(shí)例對象(函數(shù))的__proto__指向Object(Function)的prototype;
結(jié)論二:對象的__proto__原型鏈 上會有一個指向 Object.prototype
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98368.html
摘要:還是先看一些說法和描述中,一切都是對象,函數(shù)也是對象,數(shù)組也是對象,但是數(shù)組是對象的子集。對象都是由函數(shù)創(chuàng)建的。 首先,結(jié)合之前的一篇博客js對象(一)——創(chuàng)建對象開頭,為了理解對象,拋出了一系列比較繞的概念,即對象和函數(shù)的關(guān)系,搞清楚了這個問題,可能才算真正理解了什么是對象,什么是函數(shù)。還是先看一些說法和描述: JavaScript中,一切都是對象,函數(shù)也是對象,數(shù)組也是對象,但是數(shù)...
摘要:同時給該構(gòu)造函數(shù)自動添加一個屬性,該屬性為指針,指向原型對象??偨Y(jié)構(gòu)造函數(shù)中的屬性和方法僅為聲明和定義,一旦實(shí)例化工作完成后。實(shí)例對象自身的屬性和方法與構(gòu)造函數(shù)將不在存在關(guān)聯(lián)關(guān)系。 構(gòu)造函數(shù):函數(shù)中的一種,通過關(guān)鍵字new可以創(chuàng)建其實(shí)例。為了便于區(qū)分,通常首字母大寫;原型對象:一種特殊的對象,構(gòu)造函數(shù)創(chuàng)建時即自動生成;與構(gòu)造函數(shù)形成一一對應(yīng),如同人和影子般的關(guān)系;實(shí)例:通過構(gòu)造函數(shù)實(shí)例...
摘要:我們用一張圖表示構(gòu)造函數(shù)和實(shí)例原型之間的關(guān)系好了構(gòu)造函數(shù)和實(shí)例原型之間的關(guān)系我們已經(jīng)梳理清楚了,那我們怎么表示實(shí)例與實(shí)例原型,也就是或者和之間的關(guān)系呢。 開篇: 在Brendan Eich大神為JavaScript設(shè)計面向?qū)ο笙到y(tǒng)的時候,借鑒了Self 和Smalltalk這兩門基于原型的語言,之所以選擇基于原型的面向?qū)ο笙到y(tǒng),并不是因?yàn)闀r間匆忙,它設(shè)計起來相對簡單,而是因?yàn)閺囊婚_始B...
摘要:我們用一張圖表示構(gòu)造函數(shù)和實(shí)例原型之間的關(guān)系好了構(gòu)造函數(shù)和實(shí)例原型之間的關(guān)系我們已經(jīng)梳理清楚了,那我們怎么表示實(shí)例與實(shí)例原型,也就是或者和之間的關(guān)系呢。 開篇: 在Brendan Eich大神為JavaScript設(shè)計面向?qū)ο笙到y(tǒng)的時候,借鑒了Self 和Smalltalk這兩門基于原型的語言,之所以選擇基于原型的面向?qū)ο笙到y(tǒng),并不是因?yàn)闀r間匆忙,它設(shè)計起來相對簡單,而是因?yàn)閺囊婚_始B...
摘要:接下來,我們就一起深入了解的數(shù)據(jù)響應(yīng)式原理,搞清楚響應(yīng)式的實(shí)現(xiàn)機(jī)制。回調(diào)函數(shù)只是打印出新的得到的新的值,由執(zhí)行后生成。及異步更新相信讀過前文,你應(yīng)該對響應(yīng)式原理有基本的認(rèn)識。 前言 Vue.js 的核心包括一套響應(yīng)式系統(tǒng)。 響應(yīng)式,是指當(dāng)數(shù)據(jù)改變后,Vue 會通知到使用該數(shù)據(jù)的代碼。例如,視圖渲染中使用了數(shù)據(jù),數(shù)據(jù)改變后,視圖也會自動更新。 舉個簡單的例子,對于模板: {{ name ...
閱讀 3226·2021-11-23 09:51
閱讀 3571·2021-11-09 09:46
閱讀 3679·2021-11-09 09:45
閱讀 2952·2019-08-29 17:31
閱讀 1870·2019-08-26 13:39
閱讀 2729·2019-08-26 12:12
閱讀 3627·2019-08-26 12:08
閱讀 2244·2019-08-26 11:31