A | B | C | D | E | F | G | |
---|---|---|---|---|---|---|---|
1 | Usage of ECMASript 5.1 Object Internal Methods | ||||||
2 | Spec. | Internal Method | implemented by | Calls [[methods]] | Called by [[methods]] | Used By abstract opertations & semantic productions | called by built-in functions |
3 | 8.12.1, 10.6, 15.5.5.2 | [[GetOwnProperty]] | Object, argumentsObj, string instances | none | [[GetProperty], [[CanPut]], [[Put]], [[Delete]], [[DefineOwnProperty]], argObj.[[GetOwnProperty]]2, argObj.[[GetOwnProperty]] , argObj.[[Get]], argObj.[[DefineOwnProperty]], Array.[[DefineOwnProperty], String.[GetOwnProperty] | declaration instantiation1, PropertyAssignment | Object.getOwnPropertyDescriptor, Object.seal, Object.freeze, Object.isSealed, Object.isFrozen, Object.proto.hasOwnProperty, Object.proto.propertyIsEnumerable, Array sparse |
4 | 8.12.2 | [[GetProperty] | Object | [[GetOwnProperty]], [[GetProperty]]3 | [[Get]], [[CanPut]], [[Put]], [[HasProperty]], primref.[[Get]], primref.[Put]] | none | none |
5 | 8.12.3, 8.7.1, 10.6, 15.3.5.4 | [[Get]] | Object, Reference with primitive base, argumentsObj, function instances | [[GetProperty], [[Call]], [[DefaultValue]] | primref.[[Get]], func.[[HasInstance]], func.[[Get]]2 , func.[[Call]], argObj.[[Get]]2, argObj.[[Get]] | GetValue, ToPropertyDescriptor, objEnvRec.GetBindingValue, ArrayLiteral, ElementList | Object.defineProperties, Object.proto.toLocaleString, Function.proto.apply, Array sparse, Array.proto.toString, Array.proto.toLocaleString, Array.proto.concat, Array.proto.join, Array.proto.pop, Array.proto.push, Array.proto.reverse, Array.proto.shift, Array.proto.slice, Array.proto.sort, Array.proto.splice, Array.proto.unshift, Array.proto.indexOf, Array.proto.lastIndexOf, Array.proto.every, Array.proto.some, Array.proto.forEach, Array.proto.map, Array.proto.filter, Array.proto.reduce, Array.proto.reduceRight, String.proto.match, Data.proto.toJSON, RegExp.proto.exec, Error.proto.toString, JSON.parse, JSON.stringify, RegExp.proto.toString4, String.proto.replace4 |
6 | 8.12.4 | [[CanPut]] | Object | [[GetOwnProperty]], [[GetProperty] | [[Put]], primref.[Put] | none | none |
7 | 8.12.5, 8.7.2, 10.6 | [[Put]] | Object, Reference with primitive base, argumentsObj | [[CanPut]], [[GetOwnProperty], [[Call]], [[DefineOwnProperty]] | argObj.[[DefineOwnProperty] | PutValue, objEnvRec.SetMutableBinding, ArrayLiteral | Array.proto.pop, Array.proto.push, Array.proto.reverse, Array.proto.shift, Array.proto.sort, Array.proto.splice, Array.proto.unshift, String.proto.match, RegExp.proto.exec, String.proto.replace4 |
8 | 8.12.6 | [[HasProperty]] | Object | [[GetProperty]]5 | ToPropertyDescriptor, objEnvRec.HasBinding, objEnvRec.CreateMutableBinding, objEnvRec.GetBindingValue, in operator | Array.proto.concat, Array.proto.reverse, Array.proto.shift, Array.proto.slice, Array.proto.sort, Array.proto.splice, Array.proto.unshift, Array.proto.indexOf, Array.proto.lastIndexOf, Array.proto.every, Array.proto.some, Array.proto.forEach, Array.proto.map, Array.proto.filter, Array.proto.reduce, Array.proto.reduce, Array.proto.reduceRight | |
9 | 8.12.7, 10.6 | [[Delete]] | Object, argumentsObject | [[GetOwnProperty]] | argobj.[DefineOwnProperty], argobj.[[Delete]], Array.[[DefineOwnProperty]] | objEnvRec.DeleteBinding, delete operator | Array.proto.pop, Array.proto.reverse, Array.proto.shift, Array.proto.sort, Array.proto.splice, Array.proto.unshift |
10 | 8.12.8 | [[DefaultValue]] | Object | [[Get]], [[Call]] | ToPrimitive | ||
11 | 8.12.9, 10.6, 15.4.5.1 | [DefineOwnProperty]] | Object, argumentsObject, array instances | [[GetOwnProperty]] | [[Put]], argObj.[[DefineOwnProperty]]2, Array.[[DefineOwnProperty]]2 | FromPropertyDescrptor, objEnvRec.CreateMutableBinding, declaration instantiation, CreateArgumentsObjecty, ElementList, PropertyNameandValueList, Create Function Obj, create ThrowTypeError function (13.2.3) | Object.getOwnPropertyNames, Object.DefineProperty, Object.defineProperties, Object.seal, Object.freeze, Object.keys, Function.proto.bind, Array.proto.concat, Array.proto.slice, Array.proto.splice, Array.proto.map, Array.proto.filter, String.proto.match, String.proto.split, RegExp.proto.exec, JSON.parse, JSON.stringify |
12 | NOTES | ||||||
13 | 1 | The actual algorithms in both ES5 and ES5.1 use [[GetProperty]]. This is an error as reproted in https://mail.mozilla.org/pipermail/es5-discuss/2011-January/003882.html | |||||
14 | 2 | This is a non-polymorphic calls to the default object implementation | |||||
15 | 3 | This is a recursive polymorphic call | |||||
16 | 4 | The call is implicit in a non-algorithm specification | |||||
17 | 5 | [[HasProperty]] simply calls [[GetProperty]] tests its result. It adds no essential semantics that is part of [[GetProperty]] | |||||
18 | |||||||
19 | Abstract Operations that call Object internal methods | ||||||
20 | Spec. | Abstract Operation | part of by | Calls [[methods]] | Called by [[methods]] | Used By abstract opertations & semantic productions | called by built-in functions |
21 | 8.7.1 | GetValue() | Reference | [[Get]] | none | many semantic productions | none |
22 | 8.7.2 | PutValue() | Reference | [[Put]] | none | postfix increment, postfix decrement, prefix increment, prefix decrment, simple assignment, compound assignment, variable statement, for-in statement | none |
23 | |||||||
24 | 8.10.4 | FromPropertyDescriptor() | [[Proptery Descriptor]] | [[DefineOwnProperty]] | none | Object.getOwnPropertyDescriptor | |
25 | 8.10.5 | ToPropertyDescrptor() | [[Proptery Descriptor]] | [[HasProperty]], [[Get]] | none | Object.defineProperty, Object.defineProperties | |
26 | 9.1 | ToPrimitive | [[DefaultValue]] | none | ToNumber, ToString, addition operator, abstraction relational comparision algorithm, abstract equality comparision algorithm | Date constructor, Date.proto.toISOString | |
27 | ToNumber | Array.[[DefineOwnProperty]] | ToInteger, ToInt32, ToUInt32, ToUInt16, most arithmetic operators, abstraction relational comparision algorithm, abstract equality comparision algorithm | isNaN, isFinite, String.proto.lastIndexOf, Number constructor, all Math functions, Date constructor, Date.UTC, all Date.proto methods with arguments, JSON.stringify | |||
28 | ToInteger | String.[[GetOwnProperty]] | Array.proto.slice, Array.proto.splice, Array.proto.indexOf, Array.proto.lastIndexOf, String.proto.charAt, String.proto.charCodeAt, String.proto.indexOf, String.proto.lastIndexOf, String.proto.slice, String.proto.substring, Number.proto.toString, Number.proto.toFixed, Number.proto.toExponential, Number.proto.toPrecision, Data MakeTime, Date TimeClip, Date constructor, Date.UTC, RegExp.proto.exe, JSON.stringify, String.proto.substr, Date.proto.setYear | ||||
29 | ToInt32 | Bitwise not operator, left shift operator, signed right shift operator, binary bitwise operators | parseInt | ||||
30 | ToUnit32 | Array.[[DefineOwnProperty]] | ArrayLiteral, ElementList, left shift operator, signed right shift operator, unsigned right shift operator, binary bitwise operators | Function.proto.apply, array sparse alogirthm, Array constructor, Array.proto.toLocaleString, Array.proto.join, Array.proto.pop, Array.proto.push, Array.proto.reverse, Array.proto.shift, Array.proto.slice, Array.proto.splice, Array.proto.unshift, Array.proto.indexOf, Array.proto.lastIndexOf, Array.proto.every, Array.proto.some, Array.proto.forEach, Array.proto.map, Array.proto.filter, Array.proto.reduce, Array.proto.reduceRight, String.proto.split | |||
31 | ToUint16 | String.fromCharCode | |||||
32 | ToString | Array.[[DefineOwnProperty]], String.[[GetOwnProperty]] | ToString, CreateArgumentsObject. ArrayLiteral, ElementList, PropertyName, MemberExpression, addition operator, in operator, | parseInt, parseFloat, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, Object.getOwnPropertyDescriptor, Object.getOwnPropertyNames, Object.defineProperty, Object.keys, Object.proto.hasOwnProperty, Object.proto.propertyIsEnumerable, Function constructor, Function.proto.apply, Array sparse, Array.proto.concat, Array.proto.join, Array.proto.pop, Array.proto.push, Array.proto.reverse, Array.proto.shift, Array.proto.slice, Array.proto.sort, Array.proto.splice, Array.proto.unshift, Array.proto.indexOf, Array.proto.lastIndexOf, Array.proto.every, Array.proto.some, Array.proto.forEach, Array.proto.map, Array.proto.filter, Array.proto.reduce, Array.proto.reduceRight, String constructor, String.proto.charAt, String.proto.charCodeAt, String.proto.concat, String.proto.indexOf, String.proto.lastIndexOf, String.proto.localeCompare, String.proto.match, String.proto.replace, String.proto.search, String.proto.slice, String.proto.split, String.proto.substring, String.proto.toLowerCase, String.proto.trim, Number.proto.toString, Number.proto.toFixed, Number.proto.toExponential, Number.proto.toPrecision, Date.parse, RegExp constructor, RegExp.proto.exec, Error constructor, Error.proto.toString, NativeError constructors, JSON.parse, JSON.stringify, escape, unescape, String.proto.substr, |