@moomfe/zenjs
Version:
ZenJS 是一个高性能的 JavaScript 工具库。
33 lines (27 loc) • 1.03 kB
JavaScript
import defineProperty from '../global/Object/defineProperty';
import assign from '../global/Object/assign';
import isArray from '../global/Array/isArray';
/**
* 在一个对象上定义/修改一个新属性 ( 对 Object.defineProperty 的封装 )
* @param {any} obj 要在其上定义属性的对象, 为数组时将对数组内对象都进行属性定义
* @param {String} name 要定义或修改的属性的名称
* @param {any} options 将被定义或修改的属性描述符
* @param {any} options2 将被定义或修改的属性描述符, 会覆盖前一个 options
*/
export default function define( obj, name, options, options2 ){
if( obj == null ){
return;
}
// define( [ window, document ], name, options )
if( isArray( obj ) && obj instanceof Array ){
obj.forEach( obj => define( obj, name, options, options2 ) );
return;
}
name.split(' ').forEach( name => {
defineProperty(
obj, name, assign(
{}, options, options2
)
);
});
}