最近项目中有遇到在点击切换按钮的时候,要判断当前页面的数据有没有发生修改,如果发生了修改,则提示是否保存的功能。
刚开始觉得很麻烦,后来想了一个办好,将页面初始化和点击切换时的数据写成两个对象,这样对比两个对象是否相等就可以很快的实现以上功能了。
1.首先要先有两个对象,如下举例:
var obj1 = {
name:"xx",
sex:"man",
age:18
}
var obj2 = {
name:"xxs",
sex:"man",
age:18
}
2.判断两个对象是否相等:
function isObjectValueEqual (a, b) {
//取对象a和b的属性名
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
//判断属性名的length是否一致
if (aProps.length != bProps.length) {
return false;
}
//循环取出属性名,再判断属性值是否一致
for (var i = 0; i < aProps.length; i++) {
var propName = aProps[i];
if (a[propName] !== b[propName]) {
return false;
}
}
return true;
}
3.做出相应的操作:
var isChange = isObjectValueEqual(obj1,obj2);
if (isChange == true){
console.log('没有修改,不需要提示是否保存');
}else {
console.log('发生修改,提示是否保存');
}