1.判斷乙個物件上是否有某屬性
① 通過點. 或者方括號
let test =
test.name , test[『name』]
// 都會輸出he。當屬性不存在會返回undefined
test[『tostring』]
// ƒ tostring() 原型鏈上有的tostring方法,也能返回
② in 運算子如果指定的屬性在指定的物件或其原型鏈中,則in 運算子返回true。無法區分是自身還是原型上的屬性
let test =
『name』 in test // true
『undefine』 in test // true undefined屬性也可正常判斷
③ hasownproperty()
test.
hasownproperty
('name』)
// true. 自身的屬性
test.
hasownproperty
(『tostring』)
// fasle ,原型鏈上的屬性
2.判斷js資料的型別①.typeof只會返回以下幾種型別 number, boolean, string, function,object,undefined
注意: typeof(null, array,物件) 返回的都是是object (typeof 的侷限性)
②.instanceof
instanceof只能用來判斷兩個物件是否屬於例項關係, 而不能判斷乙個物件例項具體屬於哪種型別。
用法:a instanceof b ,判斷a是否是b的例項(檢測的是原型),返回true或false
var b =
'123'
;alert
(typeof b)
;//string
alert
(b instanceof
string);
//false
var c =
newstring
("123");
alert
(typeof c)
;//object
alert
(c instanceof
string);
//true
③.constructor函式定義時,js引擎會為函式新增prototype物件指向原型,在prototype上新增constructor屬性,指向該函式. 從原型鏈角度講,這個時候建構函式f就是新物件f的型別。
注: 基本型別 null和undefined這兩不能適用constructor。因為他是無效物件,因此不會有constructor存在,需要用其他方法判斷
基本用法:
var a=
'we'
a.constructor === string // true
④.object.prototype.tostring.call()tostring()是object原型上的方法,呼叫該方法預設返回當前物件的[[class]], 這是內部屬性,返回格式[object 型別]
object.prototype.tostring.
call(''
)//[object string]
object.prototype.tostring.
call([
1,2,
3])// [object array]
⑤.判斷資料型別(結合以上 typeof 和instanceof ,適用於所有資料的方法)
function
getdatatype
(obj)
elseif(
typeof obj ===
'object'
)else
}else
}
例子:
判斷乙個物件是否屬於陣列
①objct.prototype.tostring.call(obj)="[object arrary]" (最佳)3.判斷乙個變數是否為空物件注意: 存在乙個問題,物件上不可列舉的屬性以下都不可行②obj instanceof array
③typeof obj"object" &&obj.constructor==array
①. json物件轉化成json字串,在判斷該字串是否為{}
var b = (json.stringify(obj) === 『{}』)
②. object.keys()【es6新增】
object.keys() 方法會返回乙個由乙個給定物件的自身可列舉屬性組成的陣列。如果我們的物件為空,他會返回乙個空陣列。將所有可列舉屬性鍵名列舉到陣列中,判斷陣列長度是不是0
js中和陣列相關的物件 Array
定義 定義三種形式 var arr value,value2 var arr new array 4 開闢空間 var arr new array value,value2,vlaue3 屬性 length 返回字串的長度。prototype 原型屬性 和string類的prototype的屬性一樣...
判斷 JS 中物件的型別
1.typeof 形如 var x xx typeof x string typeof x 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 ...
判斷 JS 中物件的型別
1.typeof 形如 var x xx typeof x string typeof x 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 ...