国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS數(shù)據(jù)類型檢驗(yàn)

wuyumin / 1941人閱讀

摘要:如果此方法在自定義對(duì)象中未被覆蓋,返回,其中是對(duì)象的類型那為什么會(huì)報(bào)錯(cuò)呢這是為什么呢,因?yàn)闉闃?gòu)造函數(shù),構(gòu)造函數(shù)本身沒有方法。依照原型鏈關(guān)系,構(gòu)造函數(shù)的上游原型鏈?zhǔn)?。所以,你調(diào)用本質(zhì)上是調(diào)用,這里需要的參數(shù)類型是函數(shù),所以會(huì)報(bào)錯(cuò)。

我們知道判斷數(shù)據(jù)類型可以用typeof

定義一些數(shù)據(jù)

let num=1,str="str",bool=true,obj={},arr=[],sy=Symbol("s"),g,reg=/test/,date=new Date()

typeof運(yùn)算符

typeof num //"number"
typeof str //"string"
typeof bool //"boolean"
typeof g //"undefined"
typeof obj //"object"
typeof arr //"object"
typeof reg//"object"
typeof date //"object"
typeof null //"object"

可以看出來(lái)typeof 對(duì)基本類型(除了null)可以判斷出類型,但是對(duì)應(yīng)對(duì)象,沒有辦法知道具體的類型

instanceof 判斷是否為每個(gè)類型的實(shí)例,通過這個(gè)方法可以判斷出類型,我們對(duì)上述數(shù)據(jù)進(jìn)行判斷

function Person(){}
let p=new Person()
function Foo(){}
let f=new Foo()
num instanceof Number //false 
str instanceof String //false
arr instanceof Object //true
arr instanceof Array //true 
obj instanceof Object //true 
obj instanceof Array //false 
reg instanceof RegExp //true
date instanceof Date //true

constructor

arr.constructor ===Array //true 
obj.constructor ===Object //true 
str.constructor === String  //true

從輸出的結(jié)果我們可以看出,除了undefined和null,其他類型的變量均能使用constructor判斷出類型。
不過使用constructor也不是保險(xiǎn)的,因?yàn)閏onstructor屬性是可以被修改的,會(huì)導(dǎo)致檢測(cè)出的結(jié)果不正確

Object.prototype.toString.call

Object.prototype.toString.call(str) //"[object String]"

Object.prototype.toString.call(obj) //"[object Object]"

Object.prototype.toString.call(null) //"[object Null]"

Object.prototype.toString.call(num) ///"[object Number]"

...

每個(gè)對(duì)象都有一個(gè)toString()方法,當(dāng)該對(duì)象被表示為一個(gè)文本值時(shí),或者一個(gè)對(duì)象以預(yù)期的字符串方式引用時(shí)自動(dòng)調(diào)用。默認(rèn)情況下,toString()方法被每個(gè)Object對(duì)象繼承。如果此方法在自定義對(duì)象中未被覆蓋,toString() 返回 "[object type]",其中type是對(duì)象的類型

那為什么Object.toString.call(params) 會(huì)報(bào)錯(cuò)呢?

Object.toString.call(num)

Uncaught TypeError: Function.prototype.toString requires that "this" be a Function at Number.toString () at :1:17

這是為什么呢,因?yàn)镺bject為構(gòu)造函數(shù),Object構(gòu)造函數(shù)本身沒有toString方法。
依照原型鏈關(guān)系,Object構(gòu)造函數(shù)的上游原型鏈?zhǔn)荈unction.prototype。
所以,你調(diào)用Object.toString.call(param)本質(zhì)上是調(diào)用Function.prototype.toString.call(param),這里需要的參數(shù)類型是函數(shù),所以會(huì)報(bào)錯(cuò)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/102996.html

相關(guān)文章

  • javascript 參數(shù)檢驗(yàn)(一):實(shí)現(xiàn)一個(gè)方便的參數(shù)檢驗(yàn)工具

    摘要:本文嘗試編寫一種參數(shù)檢查工具,期待能緩解類似問題。為了實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用,返回的是一個(gè)特殊的包裝對(duì)象。如果要打印出檢查失敗的參數(shù)名,需要寫成。由于德摩根定律的存在,后的參數(shù)表實(shí)際上在表達(dá)與的關(guān)系,比如表示的是參數(shù)既不為也不為。 綜述 javascript 屬于弱類型語(yǔ)言,參數(shù)的類型錯(cuò)誤只能在運(yùn)行期發(fā)現(xiàn)。當(dāng)你需要 expose 非常健壯的接口給外部,或者在調(diào)試較大項(xiàng)目的時(shí)候,你可能會(huì)懷念強(qiáng)類型...

    maxmin 評(píng)論0 收藏0
  • 利用Object.prototype.toString.call()來(lái)進(jìn)行類型檢驗(yàn)

    摘要:會(huì)將數(shù)組中的每個(gè)元素一個(gè)個(gè)傳入給。參考鏈接與的區(qū)別二進(jìn)行類型檢驗(yàn)首先來(lái)看一個(gè)問題,用來(lái)檢驗(yàn)類型有什么缺點(diǎn)呢答案是無(wú)法準(zhǔn)確地檢驗(yàn)對(duì)象類型。比較好的方式就是用來(lái)進(jìn)行檢驗(yàn)。判斷是否是對(duì)象類型注意使用是不能得到類型的。 一、apply與call的區(qū)別 相同點(diǎn):可以讓一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象的方法不同點(diǎn): apply最多只能傳入兩個(gè)參數(shù),第一個(gè)為對(duì)象,第二個(gè)為數(shù)組 call能傳入多個(gè)參數(shù),第一個(gè)...

    JackJiang 評(píng)論0 收藏0
  • 分享一個(gè)超詳細(xì)的數(shù)據(jù)分析案例【Python】附ABTest詳細(xì)介紹

    摘要:確定分流方案使用各類平臺(tái)分配流量。備擇假設(shè)與零假設(shè)相反,即實(shí)驗(yàn)者希望證實(shí)的假設(shè)。雖然該數(shù)據(jù)集的統(tǒng)計(jì)結(jié)果與支付寶的實(shí)際規(guī)模有偏差,但不影響解決方案的適用性。選定統(tǒng)計(jì)方法由于樣本較大,故采用檢驗(yàn)。 ...

    3fuyu 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)類型

    摘要:數(shù)字十進(jìn)制直接寫二進(jìn)制前綴八進(jìn)制前綴十六進(jìn)制前綴字符串你好轉(zhuǎn)義加,表示特定含義或者本來(lái)有特定含義的變?yōu)橐话阕址疽?,轉(zhuǎn)義后換行符本意引用,轉(zhuǎn)義后輸出本意,轉(zhuǎn)義后制表符本意引用,轉(zhuǎn)義后輸出多行字符串布爾符號(hào)對(duì)象設(shè)定設(shè)置對(duì)象屬性名,左邊引號(hào)可省 數(shù)字 NUMBER 十進(jìn)制 直接寫 11.1 .11.1e^2 二進(jìn)制前綴 0b 八進(jìn)制前綴 0 十六進(jìn)制前綴 0x 字符串 str...

    Dogee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<