1. for-in循环
- 专门遍历对象
- 遍历对象上的所有属性
- 遍历对象上所有可枚举的属性(1. 自定义属性;2. 设置为可枚举属性)
function Person(){
this.name = 'Jack'
this.age = 18
this.gender = '男'
Person.prototype.sayHi = function(){ console.log('Hi!') }
let p = new Person();
for(var k in p){
console.log('我执行了', k)
}
答案:
name
age
gender
sayHi
2. Object.prototype.hasOwnProperty()
用于判断某个属性定义在对象自身,还是定义在原型链上。
function Person(){
this.name = 'Jack'
this.age = 18
this.gender = '男'
Person.prototype.sayHi = function(){ console.log('Hi!') }
let p = new Person();
for(var k in p){
if(p.hasOwnPeroperty(k)){
console.log('我执行了', k)
}
}
3. Object.defineProperty()
直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
数据劫持
给当前设置的属性设置行为状态。