diff --git a/arrayLikeMethods.js b/arrayLikeMethods.js index 4f1c8f2d29f6b240e1660afd768ecee4e9a03cf0..cc195bbeebf17f2a322158d755a8ba872bc97433 100644 --- a/arrayLikeMethods.js +++ b/arrayLikeMethods.js @@ -1,6 +1,6 @@ /*! arrayLikeMethods.js -date 1692547463377 [Mon Aug 21 2023 00:04:23 GMT+0800 (China Standard Time)] +date 1693145244301 [Sun Aug 27 2023 22:07:24 GMT+0800 (China Standard Time)] (c) 2023 Bright_Leader Licensed under the Apache-2.0. */ @@ -163,9 +163,8 @@ ESLint [ http://eslint.org/ ] configurations require /* eslint-disable-line no-undef */ ===typeFunction)&& /* NodeJS environment [ http://nodejs.org ] or some other environment that uses "module.exports" to import modules? */ function(){ - const exports_key="exports"; - let exports; - isObjectType(exports=var0[exports_key])||(var0[exports_key]=exports=tryES5CreateNullPrototypeObject()); + let key,exports; + isObjectType(exports=var0[key="exports"])||(var0[key]=exports=tryES5CreateNullPrototypeObject()); exports[source_key]="module.exports"; exports[isAsynchronous_key]=isAsynchronous; factory(exports,var1); @@ -308,12 +307,12 @@ const isNotInfinity=function(value){ return value!==infinity&&value!==negativeInfinity; }; -const isNormalNumber=function(value){ +const isFiniteNumber=function(value){ return isNumber(value)&&isNotNaN(value)&&isNotInfinity(value); }; const forceToInteger=function(value){ - return isNormalNumber(value)?value-(value%1):value^0; + return isFiniteNumber(value)?value-(value%1):value^0; }; const UNSIGNED_INT32_MAX=4294967295; @@ -534,16 +533,14 @@ const definePropertyIsFunction=isFunction(defineProperty); return function(target,propertyName,propertyValue,isWritable,isEnumerable,isConfigurable){ returnOrThrowObjectType(target); - definePropertyIsFunction?defineProperty( - target, - propertyName, - { - value:propertyValue, - writable:isWritable, - enumerable:isEnumerable, - configurable:isConfigurable - } - ):(target[propertyName]=propertyValue); + let tempObject; + if(definePropertyIsFunction){ + (tempObject=new Object_constructor()).value=propertyValue; + tempObject.writable=isWritable; + tempObject.enumerable=isEnumerable; + tempObject.configurable=isConfigurable; + defineProperty(target,propertyName,tempObject); + }else target[propertyName]=propertyValue; return target; }; }(); @@ -838,40 +835,34 @@ const nSymbol=( globalObject.Symbol /* http://262.ecma-international.org/6.0/#sec-symbol-objects */ ); -const nSymbolIsFunction=( - isFunction(nSymbol)&& - isFunction(nSymbol["for"])&& /* http://262.ecma-international.org/6.0/#sec-symbol.for */ - isFunction(nSymbol.keyFor) /* http://262.ecma-international.org/6.0/#sec-symbol.keyfor */ -); - function isSymbol(value){ return typeof value==="symbol"; /* http://262.ecma-international.org/6.0/#sec-typeof-operator-runtime-semantics-evaluation */ } -const tryES6AssignWellKnownSymbolProperty=function(target,symbolKeyName,propertyValue,writable,enumerable,configurable){ - tryES5DefineProperty( - returnOrThrowObjectType(target), +const iterator_key="iterator"; - "@@"+symbolKeyName, - propertyValue, +const nSymbolIsFunction=( + isFunction(nSymbol)&& + isSymbol(nSymbol[iterator_key]) /* http://262.ecma-international.org/6.0/#sec-symbol.iterator */ +); - writable,enumerable,configurable - ); +const retrieveWellKnownSymbol=function(symbolKeyName){ let tempKey; - tryES5DefineProperty( - target, + return( + nSymbolIsFunction&& + symbolKeyName in nSymbol&& + isSymbol(tempKey=nSymbol[symbolKeyName]) /* http://262.ecma-international.org/6.0/#sec-well-known-symbols */ + )?tempKey:"@@"+symbolKeyName; +}; - ( - nSymbolIsFunction&& - symbolKeyName in nSymbol&& - isSymbol(tempKey=nSymbol[symbolKeyName]) /* http://262.ecma-international.org/6.0/#sec-well-known-symbols */ - )?tempKey:"Symbol."+symbolKeyName, - propertyValue, +const toStringTag_key="toStringTag", + isConcatSpreadable_key="isConcatSpreadable", + unscopables_key="unscopables"; - writable,enumerable,configurable - ); - return target; -}; +const iterator_wellKnownSymbol=retrieveWellKnownSymbol(iterator_key), + toStringTag_wellKnownSymbol=retrieveWellKnownSymbol(toStringTag_key), /* http://262.ecma-international.org/6.0/#sec-symbol.tostringtag */ + isConcatSpreadable_wellKnownSymbol=retrieveWellKnownSymbol(isConcatSpreadable_key), /* http://262.ecma-international.org/6.0/#sec-symbol.isconcatspreadable */ + unscopables_wellKnownSymbol=retrieveWellKnownSymbol(unscopables_key); /* http://262.ecma-international.org/6.0/#sec-symbol.unscopables */ function returnThis_makeFunction(){ return function(){ @@ -879,8 +870,6 @@ function returnThis_makeFunction(){ }; } -const iterator_key="iterator"; - const IterableIterator=function(){ /* http://262.ecma-international.org/6.0/#sec-iterator-interface */ /* http://262.ecma-international.org/6.0/#sec-iterable-interface */ @@ -932,10 +921,10 @@ tryES5DefineProperty( False,False,False ); -tryES6AssignWellKnownSymbolProperty( +tryES5DefineProperty( constructorFn_prototype, - iterator_key, /* http://262.ecma-international.org/6.0/#sec-symbol.iterator */ + iterator_wellKnownSymbol, returnThis_makeFunction(), /* http://262.ecma-international.org/6.0/#sec-%iteratorprototype%-@@iterator */ False,False,False @@ -1026,10 +1015,10 @@ so we ignore this "if" case entirely and jump to step 9 directly. False,False,False ); -tryES6AssignWellKnownSymbolProperty( +tryES5DefineProperty( ArrayIteratorPrototype, - "toStringTag", /* http://262.ecma-international.org/6.0/#sec-symbol.tostringtag */ + toStringTag_wellKnownSymbol, "Array Iterator", /* http://262.ecma-international.org/6.0/#sec-%arrayiteratorprototype%-@@tostringtag */ False,False,True @@ -1344,30 +1333,30 @@ http://www.ecma-international.org/wp-content/uploads/ECMA-262_7th_edition_june_2 useDefaultDefinePropertyConfig?True:configurable ); - tryES6AssignWellKnownSymbolProperty( + tryES5DefineProperty( target, - "isConcatSpreadable", /* http://262.ecma-international.org/6.0/#sec-symbol.isconcatspreadable */ + isConcatSpreadable_wellKnownSymbol, True, useDefaultDefinePropertyConfig?True:writable, useDefaultDefinePropertyConfig?False:enumerable, useDefaultDefinePropertyConfig?True:configurable ); - tryES6AssignWellKnownSymbolProperty( + tryES5DefineProperty( target, - iterator_key, + iterator_wellKnownSymbol, arrayLikeValues, useDefaultDefinePropertyConfig?True:writable, useDefaultDefinePropertyConfig?False:enumerable, useDefaultDefinePropertyConfig?True:configurable ); - tryES6AssignWellKnownSymbolProperty( + tryES5DefineProperty( target, - "unscopables", /* http://262.ecma-international.org/6.0/#sec-symbol.unscopables */ + unscopables_wellKnownSymbol, getArraySymbolunscopables(tryES5CreateNullPrototypeObject()), useDefaultDefinePropertyConfig?False:writable, @@ -1384,7 +1373,7 @@ const exportStaticMethods=function(){ const assist=function(target){ returnOrThrowObjectType(target).isInteger=isInteger; target.isNotInfinity=isNotInfinity; - target.isNormalNumber=isNormalNumber; + target.isFiniteNumber=isFiniteNumber; target.forceToInteger=forceToInteger; target.isUint32=isUint32; target.isSint32=isSint32; @@ -1493,6 +1482,31 @@ temp0[key_plus_value_itemKind]=key_plus_value_itemKind; createArrayIterator.allowedKinds=temp0; +(temp0=tryES5CreateNullPrototypeObject())[iterator_key]=iterator_wellKnownSymbol; +temp0[toStringTag_key]=toStringTag_wellKnownSymbol; +temp0[isConcatSpreadable_key]=isConcatSpreadable_wellKnownSymbol; +temp0[unscopables_key]=unscopables_wellKnownSymbol; + +tryES5DefineProperty( + objectToExport, + + "wellKnownSymbols",temp0, + + True,True,True +); + +(temp0=tryES5CreateNullPrototypeObject())[IteratedObject_doubleBracketString]=IteratedObject_internalSlot; +temp0[ArrayIteratorNextIndex_doubleBracketString]=ArrayIteratorNextIndex_internalSlot; +temp0[ArrayIterationKind_doubleBracketString]=ArrayIterationKind_internalSlot; + +tryES5DefineProperty( + objectToExport, + + "uniqueSymbols",temp0, + + True,True,True +); + (temp0=tryES5CreateNullPrototypeObject()).exportStaticMethods=exportStaticMethods; temp0.exportInstanceMethods=exportInstanceMethods; temp0.exportConstructors=exportConstructors; @@ -1504,7 +1518,7 @@ mergeObject( ); (temp0=tryES5CreateNullPrototypeObject()).author="Bright_Leader"; -temp0.date=1692547463377; +temp0.date=1693145244301; mergeObject( objectToExport,