-
应用
typeof
进行判断语法:
typeof 判断的数据
特点:能够精确判断根本数据类型,无奈对简单数据类型进行精确判断 -
应用
constructor
进行判断语法:
对象名.constructor
特点:只能判断简单数据类型,不能判断根本数据类型 -
应用
instanceof
进行判断语法:
对象名 instanceof 构造函数
特点:只能判断简单数据类型,不能判断根本数据类型 -
应用
Object.prototype.toString.call()
判断语法:Object.prototype.toString.call(须要判断的数据)
特点:能够精确判断所有数据类型 -
深度理解对象
- 对象是数据类型的一种,以键值对的模式存储数据
key : value
,应用__proto__
和原型链可拜访本人没有的属性 - 应用
for in
循环可遍历对象身上以及原型链上所有可枚举的属性;咱们能够对属性进行设置是否可枚举 hasOwnProperty()
能够产看是否是本人的属性
语法:对象名.hasOwnProperty('须要检测的属性名')
defineProperty()
数据劫持
一种给对象增加属性的形式,能够对属性设置各种各样的行为状态
语法:Object.defineProperty(须要增加属性的对象, key, {增加怎么样的设置})
- 对象是数据类型的一种,以键值对的模式存储数据
<input id="username" type="username">
<script>
let prop = {
firstName: '张',
lastName: '思锐'
}
let obj = {}
Object.defineProperty(obj, 'username', {
enumerable: true,// 设置属性是否可枚举
get() {
// 数据劫持 prop 属性
return prop.firstName + prop.lastName
},
// val 形参接管外界传过来的值
set(val) {
// 接管 形参进行批改 属性值内容
let a = val.slice(0, 1)
let b = val.slice(1)
// 应用劫持到的属性进行设置
prop.firstName = b
prop.lastName = a
let inp = document.querySelector('#username')
inp.value = obj.username
}
})
obj.username = '张一山'
</script>