您好,登錄后才能下訂單哦!
這篇文章主要講解了“jquery如何判斷是否是浮點數”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“jquery如何判斷是否是浮點數”吧!
JS(ES6)中的基本數據類型:1.數值型(Number):包括整數、浮點數、2.布爾型(Boolean)、3.字符串型(String)、4.數組(Array)、5.空值(Null) 、6.未定義(Undefined),基本數據類型是按值訪問的,因為可以直接操作保存在變量中的實際值。
引用類型:Object 、Array 、Function 、Data,引用數據類型是保存在堆內存中的對象
1.typeof
var a;
console.log("1:" + typeof a);
var b=null;
console.log("2:" + typeof b);
var c=undefined;
console.log("3:" + typeof c);
var d=new Object;
console.log("4:" + typeof d);
var e=function() {};
console.log("5:" + typeof e);
var f={};
console.log("6:" + typeof f);
var g='';
console.log("7:" + typeof g);
var h=[];
console.log("8:" + typeof h);
var i=true;
console.log("9:" + typeof i);
var j=123;
console.log("10:" + typeof j);
var k=NaN;
console.log("11:" + typeof k);
var l=/^[-+]?\d+$/;
console.log("12:" + typeof l);
打印結果如下
總結:typeof對null、undefined、NaN、數組、正則、Object的類型都為object
2.constructor
constructor 用于判斷一個變量的原型,constructor 屬性返回對創建此對象的數組函數的引用.
當一個函數 F被定義時,JS引擎會為F添加 prototype 原型,然后再在 prototype上添加一個 constructor 屬性,并讓其指向 F 的引用,當執行 var f=new F() 時,F 被當成了構造函數,f 是F的實例對象,此時 F 原型上的 constructor 傳遞到了 f 上,因此 f.constructor===F
var F=function(){}
console.log(F.prototype);
var f=new F();
console.log(f.constructor===F) //true
不難看出,F 利用原型對象上的 constructor 引用了自身,當 F 作為構造函數來創建對象時,原型上的 constructor 就被遺傳到了新創建的對象上, 從原型鏈角度講,構造函數 F 就是新對象的類型。這樣做的意義是,讓新對象在誕生以后,就具有可追溯的數據類型,也就是說對象的constructor屬性指向他的構造函數
所以內置對象在內部構建時闊以這樣做出判斷
注:
null 和 undefined 是無效的對象,因此是不會有 constructor 存在的,這兩種類型的數據需要通過其他方式來判斷
constructor屬性并非一定指向構造函數,他也是可以修改、變更的(當把F.prototype={}改寫后,會默認把constructor覆蓋掉)
instanceof
instanceof 運算符用來測試一個對象在其原型鏈中是否存在一個構造函數的 prototype 屬性
及的構造函數有這些基礎類型:String、Number、Boolean、Undefined、Null、Symbol(ES6引入了一種新的原始數據類型Symbol,表示獨一無二的值);
復雜類型:Array,Object;
其他類型:Function、RegExp、Date。
var obj=new Object()
obj instanceof Object // true
注意左側必須是對象(object),如果不是,直接返回false,列如:
var num=1
num instanceof Number // false
num=new Number(1)
num instanceof Number // true
可以看出都是num,而且都是1,只是因為第一個不是對象,是基本類型,所以直接返回false,而第二個是封裝成對象,所以true。
這里要嚴格注意這個問題,有些說法是檢測目標的__proto__與構造函數的prototype相同即返回true,這是不嚴謹的,檢測的一定要是對象才行,如:
基礎類型
var num=1
num.__proto__===Number.prototype // true
num instanceof Number // false
num=new Number(1)
num.__proto__===Number.prototype // true
num instanceof Number // true
num.__proto__===(new Number(1)).__proto__ // true
上面例子可以看出,1與new Number(1)幾乎是一樣的,只是區別在于是否封裝成對象,所以instanceof的結果是不同的,string、boolean等,這些基礎類型一樣的。
new String(1) // String
String(1) // "1"
new String(1)與String(1)是不同的,new是封裝成對象,而沒有new的只是基礎類型轉換,還是基礎類型
其他基礎類型一樣的。
復雜類型,比如數組與對象,甚至函數等,與基礎類型不同。
復雜類型
var arr=[]
arr instanceof Array // true
arr instanceof Object // true
Array.isArray(arr) // true
復雜類型從字面量是直接生成構造函數的,所以不會像基本類型一樣兩種情況。
但是上面那個問題,當然,基礎類型也會有這個問題,就是與Object對比。沒辦法,Object在原型鏈的上層,所以都會返回true,如下:
(new Number(1)) instanceof Object // true
由于從下往上,比如你判斷是Number,那就沒必要判斷是不是Object了,因為已經是Number了……
感謝各位的閱讀,以上就是“jquery如何判斷是否是浮點數”的內容了,經過本文的學習后,相信大家對jquery如何判斷是否是浮點數這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。