摘要:理論上來說,里是對象,給對象添加屬性是可以的。很明顯,這就是在或者函數(shù)上加了一個屬性,屬性值是函數(shù),作用是截取前后空格。要習(xí)慣的把中的一切看作對象,只要是對象,就是屬性的集合,屬性是鍵值對的形式。
今天在某個js交流群里看到這樣一個問題:
親們,如果我定義一個function A() { } 可以給這個函數(shù)添加一個方法嗎?例如:A.use = function() { }
我回答說“可以,js里function 是對象",但再往深一點想,對這個問題還真有點模糊,果斷驗證一下~
先說下答案:這種寫法是可以的。
理論上來說,js里function是對象,給對象添加屬性是可以的。但這樣的函數(shù)執(zhí)行是怎樣的呢?兩個函數(shù)有什么聯(lián)系呢?
javascriptfunction A() { console.log("I am A"); } A.use = function () { console.log("123"); }; A(); // I am A A.use(); // 123
運行結(jié)果可知,這兩個函數(shù)在運行的時候并沒有什么相互的影響,也體現(xiàn)了函數(shù)名就是個引用,A 和 A.use 是兩個不同的引用,運行的時候指向不同的內(nèi)存區(qū)域,所以沒有影響。
上面的代碼改為:
javascriptvar A = function() { console.log("I am A"); } A.use = function () { console.log("123"); }; A(); // I am A A.use(); // 123
用函數(shù)表達式來定義A( ),這樣是不是就明顯多了,或者說習(xí)慣多了
上面的結(jié)果表明兩個函數(shù)運行時互不影響,但是真的一點關(guān)系都沒有嗎?想起前幾天總結(jié)的this,就好奇地驗證了下這兩個函數(shù)的this是什么。
javascriptfunction A() { console.log(this); } A.use = function () { console.log(this); }; A(); // Window A.use(); // function A()
A.use()中的this是function A(),這也符合this的使用規(guī)則“
函數(shù)作為對象的方法調(diào)用時,this指向這個對象。
只不過在這里,這個對象是個函數(shù)而已。
我在寫《JavaScript原型》里面摘抄過下面這段:
在jQuery源碼中,“jQuery”或者“$”,這個變量其實是一個函數(shù),可以用 typeof 驗證一下。
console.log(typeof $); // function console.log($.trim(" ABC ")); // ABC
驗明正身!“$”的確是個函數(shù)。而經(jīng)常使用的 $.trim() 也是個函數(shù)。
很明顯,這就是在 $ 或者 jQuery 函數(shù)上加了一個 trim 屬性,屬性值是函數(shù),作用是截取前后空格。
要習(xí)慣的把js中的一切看作對象,只要是對象,就是屬性的集合,屬性是鍵值對的形式。
當(dāng)時只是記住了可以這樣寫,今天算是真的明白了 :)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/85802.html
摘要:實際上是一個讓出線程的標志遇到會立即返回一個狀態(tài)的。一個簡單的防抖函數(shù)如果定時器存在則清除重新開始定時執(zhí)行缺點只能在最后執(zhí)行,不能立即被執(zhí)行,在某些情況下不適用。假設(shè)壓入棧的所有數(shù)字均不相等。接收數(shù)據(jù)不受同源政策限制。 開始 盡管秋招還沒有拿到offer(好難過),但是一些知識點還是要總結(jié)的,既然自己選了這條路,那就一定要堅定不移的走下去...... 注意 new 運算符的優(yōu)先級 fu...
摘要:之前寫過一篇文章面試官問能否模擬實現(xiàn)的和方法就是利用對象上的函數(shù)指向這個對象,來模擬實現(xiàn)和的。雖然實際使用時不會顯示返回,但面試官會問到。非嚴格模式下,和,指向全局對象 前言 面試官出很多考題,基本都會變著方式來考察this指向,看候選人對JS基礎(chǔ)知識是否扎實。讀者可以先拉到底部看總結(jié),再谷歌(或各技術(shù)平臺)搜索幾篇類似文章,看筆者寫的文章和別人有什么不同(歡迎在評論區(qū)評論不同之處),...
摘要:今天同學(xué)去面試,做了兩道面試題全部做錯了,發(fā)過來給道典型的面試題前端掘金在界中,開發(fā)人員的需求量一直居高不下。 排序算法 -- JavaScript 標準參考教程(alpha) - 前端 - 掘金來自《JavaScript 標準參考教程(alpha)》,by 阮一峰 目錄 冒泡排序 簡介 算法實現(xiàn) 選擇排序 簡介 算法實現(xiàn) ... 圖例詳解那道 setTimeout 與循環(huán)閉包的經(jīng)典面...
摘要:每一個對象直接量都是的子類,即構(gòu)造函數(shù)中的構(gòu)造函數(shù)與普通函數(shù)并沒有什么兩樣,只不過在調(diào)用時,前面加上了關(guān)鍵字,就當(dāng)成是構(gòu)造函數(shù)了。由于沒有傳入變量,在調(diào)用的構(gòu)造函數(shù)時,會出錯這個問題可以通過一個空對象來解決改自。 showImg(https://segmentfault.com/img/bVmNZj); 對于 OO 語言,有一句話叫Everything is object,雖然 Ja...
摘要:引子移動端做一個加載的圖標,跟以往沿用的都不太一樣,是一個圓環(huán)進度條,圓環(huán)進度條也就罷了,還得能用百分比控制。 引子 移動端做一個 loadiing 加載的圖標,跟以往沿用的都不太一樣,是一個圓環(huán)進度條,圓環(huán)進度條也就罷了,還得能用百分比控制。 CSS3 實現(xiàn)圓環(huán) demo 剛開始寫這個圓環(huán)的時候是參照帖子上給出的css代碼代入,然后根據(jù)自己的需求改,發(fā)現(xiàn)圓環(huán)可以完美轉(zhuǎn)動了,但是好像沒...
閱讀 1680·2021-11-15 11:38
閱讀 4530·2021-09-22 15:33
閱讀 2341·2021-08-30 09:46
閱讀 2188·2019-08-30 15:43
閱讀 832·2019-08-30 14:16
閱讀 2076·2019-08-30 13:09
閱讀 1260·2019-08-30 11:25
閱讀 707·2019-08-29 16:42