数据塌陷和劫持

在删除数组元素的时候,数组的下标重新排列

var arr = [1,2,3,4,5,6,7,8,9];
for(var i=0;i<arr.length;i++){
    arr.splice(i,1)
}
console.log(arr);

解决数组数据塌陷的方法

//第一种:
var
arr = [1,2,3,4,5,6,7,8,9]; for(var i=arr.length-1;i>=0;i--){ arr.splice(i,1) } console.log(arr);
//第二种
var arr = [1,2,3,4,5,6,7,8,9];
for(var i=0;i<arr.length;i++){
    arr.splice(0,1)
    i--
}
//第三种
var arr = [1,2,3,4,5,6,7,8,9];
while(arr.length){
    arr.splice(0,1)
}
console.log(arr);

数据劫持

var obj = {
    username:"张三",
    age:20
}
// 当文本框的内容发生改变的时候,让对象中的数据也发生改变
var inputs = document.querySelectorAll("input");
inputs[0].oninput = function(){
    obj.username = this.value
}

// 当对象中的数据发生改变的时候,让文本框的内容也发生改变
// 数据劫持 - 数据发生改变的时候就被监听到了 - 做另外的事情
// console.dir(Object); // defineProperty() - 用来劫持某个对象的某个属性
Object.defineProperty(obj,'username',{
    get(){ // get方法是只要obj的username属性被访问,就会执行的函数
        // console.log(111);
        return inputs[0].value
    },
    set(val){ // set方法是只要obj的username属性的值发生了改变就被劫持到了
        // 参数是即将改的值
        // console.log(222);
        // console.log(val);
        inputs[0].value = val
    }
})

 

posted @ 2021-02-03 15:23  技术活当赏  阅读(115)  评论(0)    收藏  举报