Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Side by Side Diff: appengine_apps/chromium_status/static/js/common/bind.js

Issue 778533003: Moved chromium_status to appengine/ (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // The following code is taken from:
6 // http://code.google.com/p/browsersync/source/browse/trunk/client/lib/base/lang .js
7
8 /**
9 * Partially applies this function to a particular "this object" and zero or
10 * more arguments. The result is a new function with some arguments of the first
11 * function pre-filled and the value of |this| "pre-specified".
12 *
13 * Remaining arguments specified at call-time are appended to the pre-
14 * specified ones.
15 *
16 * Also see: partial().
17 *
18 * Note that bind and partial are optimized such that repeated calls to it do
19 * not create more than one function object, so there is no additional cost for
20 * something like:
21 *
22 * var g = bind(f, obj);
23 * var h = partial(g, 1, 2, 3);
24 * var k = partial(h, a, b, c);
25 *
26 * Usage:
27 * var barMethBound = bind(myFunction, myObj, "arg1", "arg2");
28 * barMethBound("arg3", "arg4");
29 *
30 * @param self {Object} Specifies the object which |this| should point to
31 * when the function is run. If the value is null or undefined, it will default
32 * to the global object.
33 *
34 * @returns {Function} A partially-applied form of the function bind() was
35 * invoked as a method of.
36 */
37 function bind(fn, self, var_args) {
38 var boundargs = fn.boundArgs_ || [];
39 boundargs = boundargs.concat(Array.prototype.slice.call(arguments, 2));
40
41 if (typeof fn.boundSelf_ != "undefined") {
42 self = fn.boundSelf_;
43 }
44
45 if (typeof fn.boundFn_ != "undefined") {
46 fn = fn.boundFn_;
47 }
48
49 var newfn = function() {
50 // Combine the static args and the new args into one big array
51 var args = boundargs.concat(Array.prototype.slice.call(arguments));
52 return fn.apply(self, args);
53 }
54
55 newfn.boundArgs_ = boundargs;
56 newfn.boundSelf_ = self;
57 newfn.boundFn_ = fn;
58
59 return newfn;
60 }
61
62 /**
63 * An alias to the bind() global function.
64 *
65 * Usage:
66 * var g = f.bind(obj, arg1, arg2);
67 * g(arg3, arg4);
68 */
69 Function.prototype.bind = function(self, var_args) {
70 return bind.apply(
71 null, [this, self].concat(Array.prototype.slice.call(arguments, 1)));
72 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698