<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Le 30/08/2011 21:59, Lasse Reichstein a écrit :
    <blockquote
cite="mid:CAOu20YST8oQW_FABmAqo=ay7QiTAZpsWheu2UZz==dBdaTpFuA@mail.gmail.com"
      type="cite"><br>
      <div class="gmail_quote">On Tue, Aug 30, 2011 at 6:42 PM, David
        Bruant <span dir="ltr"><<a moz-do-not-send="true"
            href="mailto:david.bruant@labri.fr">david.bruant@labri.fr</a>></span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex;">
          <div bgcolor="#FFFFFF" text="#000000">
            <div lang="x-western">
              <div lang="x-western"> Hi,<small><br>
                  <br>
                </small>A couple of people (including myself) have been
                working on trying to implement a Function.prototype.bind
                pure-JS implementation as close to the spec as possible.<br>
                Despite the fact that this is impossible, all
                implementations relied on the built-in
                Function.prototype.call (or Function.prototype.apply). </div>
            </div>
          </div>
        </blockquote>
        <div><br>
        </div>
        <div>I've had that problem in other cases too.</div>
        <div><br>
        </div>
        <div>It's interesting that .call/.apply can't be protected from
          tampering without freezing them. </div>
        <div>If there was a function, say Function.callFunction, that
          allowed you to write the equivalent of foo.call(bar, baz) as
          Function.callFunction(foo, bar, baz), then you could store a
          copy of callFunction in a safe place and not have to worry
          about Function.prototype.call being modified.</div>
      </div>
    </blockquote>
    True. I admit that i'm currently doing some JS static analysis and i
    realize how much i prefer syntax over functions since syntax tends
    to be easier to analyse statically. With syntax you never wonder
    "has the semantic of this been overridden?" "if so, has the
    semantics changed?" the latter question being in general undecidable
    i think.<br>
    <br>
    <br>
    <blockquote
cite="mid:CAOu20YST8oQW_FABmAqo=ay7QiTAZpsWheu2UZz==dBdaTpFuA@mail.gmail.com"
      type="cite">
      <div class="gmail_quote">
        <div>Any attempt I have tried of extracting the call
          functionality without leaving a visible trace on the existing
          objects can be thwarted.</div>
        <div>Most other functions can be extracted to local variables
          and called later on the appropriate object (using .call) if
          you want to save an environment.</div>
        <div> </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex;">
          <div bgcolor="#FFFFFF" text="#000000">
            <div lang="x-western">
              <div lang="x-western"> A syntax construct allowing
                reliable binding without having me to go over one of the
                previous solutions would be welcome I think.<br>
              </div>
            </div>
          </div>
        </blockquote>
        <div><br>
        </div>
        <div>A reliable .call could probably also achieve the same.</div>
      </div>
    </blockquote>
    A reliable .call could be achieved by composing a reliable .bind and
    the function call syntax.<br>
    However, due to the current impossibility to emulate .bind with
    .call I'm doubtful that a reliable .bind (per ES5.1 15.3.4.5) is
    possible by composition of a reliable .call and other things.<br>
    Based on harmony:spread [1], i think it could be possible to have a
    reliable .apply based on a reliable .bind and function call syntax.<br>
    <br>
    Consequently, I have the impression that syntax for a reliable .bind
    would be a good fundamental brick to add to build the rest.<br>
    <br>
    David<br>
    <br>
    [1] <a class="moz-txt-link-freetext" href="http://wiki.ecmascript.org/doku.php?id=harmony:spread">http://wiki.ecmascript.org/doku.php?id=harmony:spread</a>
  </body>
</html>