解析JavaScript中的不可見數(shù)據(jù)類型
JS提供了一些內(nèi)置對(duì)象、函數(shù)和構(gòu)造器供我們編程,如Math、parseInt、Object、Array等。這些都是可見的,編程時(shí)可以使用的。比如我可以new Object 或 new Array。
有一些則是不可見的,這些對(duì)象只能由引擎在特殊的情形提供。這些類型的對(duì)象往往還被消減了一些功能。下面列舉一些
一、Arguments 類型
Arguments 類型 不能由程序員手動(dòng)創(chuàng)建其對(duì)象,即你不能 new Arguments() 。 它有且僅有一個(gè)對(duì)象arguments
function func() {
console.log(arguments[0]) // 1
console.log(arguments.length) // 3
}
func(1, 2, 3)
arguments對(duì)象是在函數(shù)調(diào)用的時(shí)候創(chuàng)建的,只在函數(shù)內(nèi)部可見和使用。可以看到arguments很象Array,可以按索引取元素,也有l(wèi)ength屬性。但它不是Array,它沒有Array的有一些方法比如push、pop等。Arguments 在ES5 10.6 里定義。
二、bind返回的函數(shù)很特殊
bind是ES5給Function.prototype新增的一個(gè)方法,它和call/apply一樣在function上直接調(diào)用。它返回一個(gè)指定了上下文和參數(shù)的函數(shù)。
function func(age) {
console.log('name: ' + this.name + ', career: ' + age)
}
var person = {name: 'John McCarthy'}
var f1 = func.bind(person, 'computer scientist')
f1() // name: John McCarthy, career: computer scientist
可以看到返回的函數(shù)f1和普通函數(shù)一樣使用小括號(hào)執(zhí)行調(diào)用了。 一切正常,但下面的代碼會(huì)讓你大跌眼鏡
function func(age) {
console.log('name: ' + this.name + ', career: ' + age)
}
var person = {name: 'John McCarthy'}
var f1 = func.bind(person, 'computer scientist')
console.log(f1.prototype) // undefined
和上面代碼比較,就最后一句不同,沒有執(zhí)行f1(),而是打印出f1.prototype,發(fā)現(xiàn)是undefined。
奇怪嗎? 每個(gè)function不都有一個(gè)prototype屬性嗎,這是用來實(shí)現(xiàn)原型繼承的哦。的確,bind返回的function比較特殊,它沒有prototype。這種特殊的函數(shù)是由JS引擎創(chuàng)建的,客戶端程序員沒法通過函數(shù)聲明或函數(shù)直接量得到。
這一點(diǎn)在規(guī)范里有明確提示 ES5 15.3.4.5

相關(guān)文章
JS實(shí)現(xiàn)簡(jiǎn)單tab選項(xiàng)卡切換
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)簡(jiǎn)單tab選項(xiàng)卡切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
淺談webpack構(gòu)建工具配置和常用插件總結(jié)
這篇文章主要介紹了淺談webpack構(gòu)建工具配置和常用插件總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-05-05
JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加Form表單元素的方法示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加Form表單元素的方法,結(jié)合實(shí)例形式分析了javascript表單元素操作相關(guān)函數(shù)使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-08-08
Javascript實(shí)現(xiàn)html轉(zhuǎn)pdf高清版(提高分辨率)
這篇文章主要介紹了Javascript將html轉(zhuǎn)成pdf高清版(提高分辨率),需要的朋友可以參考下2020-02-02
WEB前端開發(fā)框架Bootstrap3 VS Foundation5
WEB前端開發(fā)框架Bootstrap3 VS Foundation5,這篇文章主要介紹了Bootstrap3與Foundation5的五大區(qū)別,感興趣的小伙伴們可以參考一下2016-05-05
JS實(shí)現(xiàn)簡(jiǎn)單的鍵盤打字的效果
本文給大家分享的是使用javascript實(shí)現(xiàn)的簡(jiǎn)單的鍵盤打字效果,十分的簡(jiǎn)單實(shí)用,推薦給有需要的小伙伴參考下。2015-04-04
uni-app如何讀取本地json數(shù)據(jù)文件并渲染到頁(yè)面上
在做前端開發(fā)的時(shí)候,少不了要用一些模擬的json的數(shù)據(jù)來進(jìn)行測(cè)試,這篇文章主要給大家介紹了關(guān)于uni-app如何讀取本地json數(shù)據(jù)文件并渲染到頁(yè)面上的相關(guān)資料,需要的朋友可以參考下2022-08-08
Echarts橫向堆疊柱狀圖和markLine實(shí)例詳解
一些柱形圖在數(shù)據(jù)量比較多的時(shí)候,橫向排列受到擠壓,導(dǎo)致柱形圖,變的非常細(xì),影響整體的效果,所以應(yīng)該將柱形圖堆疊起來,這樣就會(huì)好很多,下面這篇文章主要給大家介紹了關(guān)于Echarts橫向堆疊柱狀圖和markLine的相關(guān)資料,需要的朋友可以參考下2022-06-06

