简介
在前端开发的过程中,我们常常会遇到对象属性值的判断和赋值问题。Nullsafe-Object 这个 NPM 包就是为了解决这个问题而生的。此包基于 Proxy 实现,为开发者省去了大量的 if-null 判断,让你可以更加专注于业务代码的编写。
安装
通过 npm 命令可以很方便地安装这个包:
npm install nullsafe-object
使用方法
使用 Nullsafe-Object,你需要首先创建一个 SafeObject
,然后在这个对象上进行操作:
const { SafeObject } = require('nullsafe-object'); const obj = new SafeObject({a: {b: {c: 1}}}); obj.a.b.c; // 1 obj.a.b.d.e.f.g.h; // undefined,不会报错 obj.a.b.d.e.f.g.h = 2; // 依然是 undefined
通过 new SafeObject
创建出来的对象,其属性值如果不存在不会报错,直接返回 undefined。此时可以对它进行任何操作,而不会抛出 TypeError: Cannot read property 'XXX' of undefined 的错误。
你甚至可以改变属性所属的对象:
const { SafeObject } = require('nullsafe-object'); const obj = new SafeObject({a: {b: {c: 1}}}); obj.a.b = {c: 2, d: 3}; console.log(obj.a.b.c); // 2 console.log(obj.a.b.d); // 3
这个包的一大特点是,在你对不存在的属性进行的任何操作(包括赋值),都不会报错。但是会被忽略。
如果你需要对赋值失败进行处理(例如,你希望因为某些原因,不能修改某些属性值),可以使用 SafeObject.val
属性代替直接赋值:
const { SafeObject } = require('nullsafe-object'); const obj = new SafeObject({a: {b: 1}}); if (obj.a.b) { obj.a.b.val = 2; }
在这个例子中,如果 obj.a.b
不存在,会被忽略。否则,会把 obj.a.b
的值修改为 2。当然,这只是简单的示例,真实场景中 if
判断的条件可能会更加复杂。
还有更多方法 you can explore,详细 API 可以查阅项目官方文档。
总结
通过使用 Nullsafe-Object 这个 NPM 包,我们可以避免冗长的 null 判断代码,提高代码的可读性和重用性。当然,在特定的场景下使用这个包,也应当注意一些安全性问题,以免造成不必要的麻烦。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600559e481e8991b448d782b