Js原型與in操作符

2021-10-07 17:39:28 字數 1911 閱讀 8371

in操作符主要用來判斷物件屬性是否存在,或者用來獲取物件的可列舉的屬性。

所以該操作符主要有兩種使用方式:

.單獨使用時,用來判斷物件屬性是否存在,無論是存在例項中還是原型中,返回true或者false

在for-in迴圈中,獲取物件的所有可訪問的、可列舉的屬性。

用來判斷是否存在可訪問的屬性

function

person()

person.prototype.name =

'張三'

;person.prototype.

sayname

=function()

;// 驗證

let person1 =

newperson()

;let person2 =

newperson()

;// 1. 來自原型上

console.

log(person1.

hasownproperty

('name'))

;// false

console.

log(

'name'

in person1)

;// true

// 2. 來自例項上

person1.name =

'李四'

;person1.age =26;

console.

log(person1.

hasownproperty

('name'))

;// true

console.

log(

'name'

in person1)

;// true

console.

log(

'age'

in person1)

;// true

// 3. 不可列舉屬性

console.

log(

'constructor'

in person1)

;// true

所以,使用hasownproperty()方法和in操作符,就可以判斷屬性是存在物件中還是存在物件的原型上

function

hasprototypeproperty

(object, name)

用來列舉物件的可列舉屬性,包括例項中的屬性,也包括原型中的屬性。

遮蔽了原型中不可列舉屬性的例項屬性也會返回,根據規定,開發人員定義的屬性都是可列舉的,只有在ie8及更早的版本中例外。

function

person()

person.prototype.name =

'張三'

;person.prototype.

sayname

=function()

;// 驗證

let person1 =

newperson()

;let person2 =

newperson()

;person2.

tostring

=function()

;// 遮蔽了原型的中tostring

for(

let prop in person2)

// tostring, name, sayname (ie8及更早的版本中不會出現tostring)

具有相似功能的方法

object.keys():獲取所有可列舉的例項屬性。

object.getownpropertynames(): 獲取所有的例項屬性,無論是否可列舉。

2 原型與in操作符

in有兩種用法,一種是使用在for in迴圈中,一種是單獨使用。單獨使用時,in操作符會在物件可以訪問給定屬性時返回true function person person.prototype.name summer person.prototype.age 20 person.prototype.j...

JS刪除與delete操作符

我以為的刪除以及我的測試var a 1 b 2 let c 3 const d 4 console.log delete a false console.log delete b true console.log delete c false console.log delete d false c...

JS 熱身,操作符

1.希望把某個元素移除你的視線 1 display none 顯示為無 2 visibility hidden 隱藏 3 width和height 4 透明度 5 left和top 6 拿乙個白色div蓋住它 7 margin負值 2.有關操作符注意 1 會進行型別轉換,然後再比較 先比較型別 2 ...