应用
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>