Vis*_* PC 1 javascript properties object
以下是MDN示例的摘录
var d = withValue.d || (
withValue.d = {
enumerable: false,
writable: false,
configurable: false,
value: value
}
);
Run Code Online (Sandbox Code Playgroud)
这是检查属性是否存在的安全方法,否则分配并初始化它?如果没有更好,安全和优化的方式?
不,这不安全,因为该属性可能确实存在于对象上但是是假的,在这种情况下,withValue.d ||
将失败并进行交替,d
尽管该d
属性已经存在,但仍将对象分配给该属性.请hasOwnProperty
改用,不要将赋值放在需要表达式的位置:
if (!withValue.hasOwnProperty('d')) {
withValue.d = {
enumerable: false,
writable: false,
configurable: false,
value: value
}
}
const { d } = withValue;
Run Code Online (Sandbox Code Playgroud)
如果d
属性(如果存在)将始终是一个对象,那么原始代码将起作用,因为对象始终是真实的.(但由于赋值为表达式,代码仍然有些臭)