nl_tokens: 4 . Let F be a new native ECMAScript object . 9 . Set the [[ Prototype ]] internal property of F to the standard built - in Function prototype object as specified in 15 . 3 . 3 . 1 . 10 . Set the [[ Call ]] internal property of F as described in 15 . 3 . 4 . 5 . 1 . 11 . Set the [[ Construct ]] internal property of F as described in 15 . 3 . 4 . 5 . 2 . 12 . Set the [[ HasInstance ]] internal property of F as described in 15 . 3 . 4 . 5 . 3 . 13 . The [[ Scope ]] internal property of F is unused and need not exist .
pl_tokens: function bound ( ) { if ( this instanceof bound ) { // 15.3.4.5.2 [[Construct]] // When the [[Construct]] internal method of a function object, // F that was created using the bind function is called with a // list of arguments ExtraArgs the following steps are taken: // 1. Let target be the value of F's [[TargetFunction]] //   internal property. // 2. If target has no [[Construct]] internal method, a //   TypeError exception is thrown. // 3. Let boundArgs be the value of F's [[BoundArgs]] internal //   property. // 4. Let args be a new list containing the same values as the //   list boundArgs in the same order followed by the same //   values as the list ExtraArgs in the same order. var self = Object . create ( target . prototype ) ; target . apply ( self , args . concat ( slice . <mask> ( arguments ) ) ) ; return self ; } else { // 15.3.4.5.1 [[Call]] // When the [[Call]] internal method of a function object, F, // which was created using the bind function is called with a // this value and a list of arguments ExtraArgs the following // steps are taken: // 1. Let boundArgs be the value of F's [[BoundArgs]] internal //   property. // 2. Let boundThis be the value of F's [[BoundThis]] internal //   property. // 3. Let target be the value of F's [[TargetFunction]] internal //   property. // 4. Let args be a new list containing the same values as the list //   boundArgs in the same order followed by the same values as //   the list ExtraArgs in the same order. 5.  Return the //   result of calling the [[Call]] internal method of target //   providing boundThis as the this value and providing args //   as the arguments. // equiv: target.call(this, ...boundArgs, ...args) return target . call . apply ( target , args . concat ( slice . call ( arguments ) ) ) ; } }