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 ...