2023-5-29(第十九天)

56 阅读2分钟

保护对象

属性的六大特性

  1. value:实际保存值的地方

  2. writable:控制属性是否可以被修改

  3. enumerable:控制属性是否可以被forEach遍历到

  4. configurable:控制属性是否可以被删除

    注: 也是总开关,若设置为false,则以上三个特性不可以再修改

  5. get:获取数据时会进行拦截操作

  6. set:设置数据时会进行拦截操作

修改四大特性
//方式一:修改单个属性
Object.defineProperty(对象名,"属性名",{
    value:"",
    writable:false,
    ...
})
​
//方式二:修改多个属性
Object.defineProperties(对象名,{
    "属性名":{四大特性},
    ...
})

对象的三个级别

防扩展:防添加
Object.preventExtension(obj)
密封:防添加、删除
Object.seal(obj)
冻结:防添加、删除、修改
Object.freeze(obj)

对象的深浅拷贝

浅拷贝:利用按值传递

var obj1={"name":"obj1"};
var obj2=obj1;

深拷贝:两者互不影响

var obj1={"name":"obj1"};
var obj2={...obj1};

前后端数据相互转换

后端将对象转为字符存储
var JSONtxt=JSON.stringify(obj)
前端将后端数据转为对象
var jsonObj=JSON.parse(JSONtxt);

注: 以上两步也可完成对象的深拷贝

Error对象

浏览器自带4种错误类型

  • SyntaxError(语法错误):符号/语法错误
  • ReferenceError(引用错误) : 未创建使用
  • TypeError(类型错误): 调用了不是自己的方法
  • RangeError(范围错误): 只有一个API会碰到:num.toFixed(d) d的取值是0-100

错误处理

try{
	可能出错的代码
}catch(err){
	发生错误后才会执行的代码
	err形参保存着错误的消息
}

【注】try...catch...的性能非常的差,可以用分支技术代替

抛出自定义错误

throw new Error("自定义错误消息")

ES5:严格模式

开启:"use strict" - 写在任何一个作用域的顶部都可以 ​ 作用: ​ 1、禁止了全局污染,使用变量之前必须先创建变量 ​ 2、将静默失败升级为报错

柯里化函数:

函数多次多次调用:函数名()()()

function add(a){
    return function(b){
        return function(c){
            console.log(a+b+c)
        }
    }
}
add(3)(5)(7);