js中和物件相關的操作 判斷型別,是否有屬性。。

2021-10-05 15:25:29 字數 2993 閱讀 1131

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]" (最佳)

②obj instanceof array

③typeof obj"object" &&obj.constructor==array

3.判斷乙個變數是否為空物件注意: 存在乙個問題,物件上不可列舉的屬性以下都不可行

①. 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 的應用 ...