/**
* 判斷是否為undefined或者null
*/ function isdef(v)
/*** 判斷是否不為undefined或者null
*/function isdef(v)
/*** 判斷是否為true
*/function istrue(v)
/*** 判斷是否為false
*/function isfalse(v)
/*** 判斷是否為原始型別:字串、數字或者布林型別,以及es6新出的symbol型別
*/function isobject(obj)
以上型別比較簡單,下面將介紹以下幾種型別:
var _tostring = object.prototype.tostring;
function torawtype(value)
首先,定義私有屬性_tostring為object原型上的方法tostring。_tostring.call(value).slice(8,-1)可以分為兩步:
1、var str =_tostring.call(value);
2、str.slice(8,-1);
型別判斷在 web 開發中有非常廣泛的應用,簡單的有判斷數字還是字串,高階一點的有判斷陣列還是物件,再高階一點的有判斷日期、正則、錯誤型別,再再高階一點還有比如判斷 plainobject、空物件、window 物件等等。
在這裡,我們不僅有個疑問,為什麼不用typeof呢,typeof能檢測六種基本型別和function(symbol是es6新出的,這裡不做介紹,有興趣的可以底下蒐集資料),可以typeof null為object,typeof new date()等new出來的物件都為 object型別。可謂漏洞百出。而object.prototype.tostring就是更好的方法。
當 tostring 方法被呼叫的時候,下面的步驟會被執行:
1、如果 this 值是 undefined,就返回 [object undefined]
2、如果 this 的值是 null,就返回 [object null]
3、讓 o 成為 toobject(this) 的結果
4、讓 class 成為 o 的內部屬性 [[class]] 的值
5、最後返回由 "[object " 和 class 和 "]" 三個部分組成的字串
通過規範,我們至少知道了呼叫 object.prototype.tostring 會返回乙個由 "[object " 和 class 和 "]" 組成的字串,而 class 是要判斷的物件的內部屬性。正是因為這種特性,我們可以用 object.prototype.tostring 方法識別出14種型別;
var num = 1; // [object number]
var str = '123'; // [object string]
var flag = true; // [object boolean]
var def = undefined; // [object undefined]
var null = null; // [object null]
var obj = // [object object]
var arr = [1, 2, 3]; // [object array]
var date = new date(); // [object date]
var err = new error(); // [object error]
var reg = /a/g; // [object regexp]
var fn = function a(){}; // [object function]
console.log(object.prototype.tostring.call(math)); // [object math]
console.log(object.prototype.tostring.call(json)); // [object json]
function func()
func();
現在再來看我們的第一步_tostring.call(value),也就是轉化為類似[object object],而第二步就是把[object object]slice成object,string,date等
原文
前端面試系列之二 型別轉換
0 或 0 0,nan false undefined null這幾個是false 其他的全都是true。if a b 的正確理解方式是 a b 進行表示式求值後,然後在轉換為boolean型別。是短路語法,求值後不一定是乙個boolean型別。短路表示式 1 只要 前面為false,不管 後面是t...
mysql概要(二)型別(數值型,字元型,時間型別
1.mysql數值型範圍 tinyint可選屬性 tinyint n unsigned zerofill n 表示顯示長度,與zerofill配合使用,即長度不夠用0填充,並且自動變成無符號的數,n僅表示一種顯示效果不配合zerofill沒有實際意義。unsigned 表示無符號,即表示 0且最大值...
型別庫(二) 型別庫的元素
如果你繞著乙個現實世界的圖書館走一走,你通常會看見許多各式各樣形狀大小很多不同方面的書籍 那些就是你期盼的幾乎無限的人類創造的知識 幸運的是,型別庫稍微簡單 只反映有限的元件資訊 任何在型別庫中的元素屬於下表中五類元素之一 元素目的 coclass 描述乙個特定物件實現的介面或排程介面 用clsid...