32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
|
|
const require_isObject = require("../predicate/isObject.js");
|
||
|
|
const require_assignValue = require("../_internal/assignValue.js");
|
||
|
|
const require_keys = require("./keys.js");
|
||
|
|
//#region src/compat/object/create.ts
|
||
|
|
/**
|
||
|
|
* Creates an object that inherits from the prototype object.
|
||
|
|
*
|
||
|
|
* If `properties` are provided, they will be added to the new object.
|
||
|
|
* Only string-keyed enumerable properties directly owned by the `properties` object are copied.
|
||
|
|
* Inherited properties or those with `Symbol` keys are not copied.
|
||
|
|
*
|
||
|
|
* @template T - The prototype object type.
|
||
|
|
* @template U - The properties object type.
|
||
|
|
* @param {T} prototype - The object to inherit from.
|
||
|
|
* @param {U} properties - The properties to assign to the created object.
|
||
|
|
* @returns {T & U} The new object.
|
||
|
|
*/
|
||
|
|
function create(prototype, properties) {
|
||
|
|
const proto = require_isObject.isObject(prototype) ? Object.create(prototype) : {};
|
||
|
|
if (properties != null) {
|
||
|
|
const propsKeys = require_keys.keys(properties);
|
||
|
|
for (let i = 0; i < propsKeys.length; i++) {
|
||
|
|
const key = propsKeys[i];
|
||
|
|
const propsValue = properties[key];
|
||
|
|
require_assignValue.assignValue(proto, key, propsValue);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return proto;
|
||
|
|
}
|
||
|
|
//#endregion
|
||
|
|
exports.create = create;
|