Object.prototype不要直接使用,代码规范

Posted thearrow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object.prototype不要直接使用,代码规范相关的知识,希望对你有一定的参考价值。

1、不要直接调用 Object.prototype 的方法,比如 hasOwnPropertypropertyIsEnumerable, 和 isPrototypeOf.

// bad
console.log(object.hasOwnProperty(key));
 
// good
console.log(Object.prototype.hasOwnProperty.call(object, key));
 
// best
const has = Object.prototype.hasOwnProperty; // 在模块作用域内,缓存查找一次。
/* or */
import has from ‘has‘;
// ...
console.log(has.call(object, key));

2、用对象展开操作符浅复制对象,优先于Object.assign 。使用对象剩余操作符来获得一个省略某些属性的新对象。

// very bad
const original = { a: 1, b: 2 };
const copy = Object.assign(original, { c: 3 }); //  `original` 是可变的 ?_?
delete copy.a; // so does this
 
// bad
const original = { a: 1, b: 2 };
const copy = Object.assign({}, original, { c: 3 }); // copy => { a: 1, b: 2, c: 3 }
 
// good
const original = { a: 1, b: 2 };
const copy = { ...original, c: 3 }; // copy => { a: 1, b: 2, c: 3 }
 
const { a, ...noA } = copy; // noA => { b: 2, c: 3 }

 原文链接: http://www.css88.com/archives/8345

以上是关于Object.prototype不要直接使用,代码规范的主要内容,如果未能解决你的问题,请参考以下文章

使用 TypeScript 扩展 Object.prototype

Object.hasOwn 替换掉 Object.prototype.hasOwnProperty

Do not access Object.prototype method‘hasOwnProperty’ from target object no-prototype-builtins

从toString()方法到Object.prototype.toString.call()方法

Do not access Object.prototype method ‘hasOwnProperty’ from target object no-prototype-builtins(示例代码

原型和原型链