JS查漏补缺

92 阅读1分钟

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()

直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

数据劫持

给当前设置的属性设置行为状态。