ABCDEFG
1
Usage of ECMASript 5.1 Object Internal Methods
2
Spec.Internal Methodimplemented byCalls [[methods]]Called by [[methods]]Used By abstract opertations & semantic productionscalled by built-in functions
3
8.12.1, 10.6, 15.5.5.2[[GetOwnProperty]] Object, argumentsObj, string instancesnone[[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]]nonenone
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, ElementListObject.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]nonenone
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, ArrayLiteralArray.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]]5ToPropertyDescriptor, objEnvRec.HasBinding, objEnvRec.CreateMutableBinding, objEnvRec.GetBindingValue, in operatorArray.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 operatorArray.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
1The 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
2This is a non-polymorphic calls to the default object implementation
15
3This is a recursive polymorphic call
16
4The 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 Operationpart of byCalls [[methods]]Called by [[methods]]Used By abstract opertations & semantic productionscalled by built-in functions
21
8.7.1GetValue()Reference[[Get]]nonemany semantic productionsnone
22
8.7.2PutValue()Reference[[Put]]nonepostfix increment, postfix decrement, prefix increment, prefix decrment, simple assignment, compound assignment, variable statement, for-in statementnone
23
24
8.10.4FromPropertyDescriptor()[[Proptery Descriptor]][[DefineOwnProperty]]noneObject.getOwnPropertyDescriptor
25
8.10.5ToPropertyDescrptor()[[Proptery Descriptor]][[HasProperty]], [[Get]]noneObject.defineProperty, Object.defineProperties
26
9.1ToPrimitive[[DefaultValue]]noneToNumber, ToString, addition operator, abstraction relational comparision algorithm, abstract equality comparision algorithmDate constructor, Date.proto.toISOString
27
ToNumberArray.[[DefineOwnProperty]]ToInteger, ToInt32, ToUInt32, ToUInt16, most arithmetic operators, abstraction relational comparision algorithm, abstract equality comparision algorithmisNaN, isFinite, String.proto.lastIndexOf, Number constructor, all Math functions, Date constructor, Date.UTC, all Date.proto methods with arguments, JSON.stringify
28
ToIntegerString.[[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
ToInt32Bitwise not operator, left shift operator, signed right shift operator, binary bitwise operatorsparseInt
30
ToUnit32Array.[[DefineOwnProperty]]ArrayLiteral, ElementList, left shift operator, signed right shift operator, unsigned right shift operator, binary bitwise operatorsFunction.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
ToUint16String.fromCharCode
32
ToStringArray.[[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,