buster-core¶
- Version:
- 0.4.0 (2011-08-26)
- Module:
require("buster-core");
- In browsers:
buster;
A collection of utilities commonly used across Buster.JS projects. The module is stable and can be freely used when extending Buster, or for any other projects should you wish to do so.
Methods¶
-
buster.
bind
()¶ buster.bind(object, methodOrString);
Binds a function to an object, such that its
this
value is fixed regardless of how it’s called. The function works much like`Function.prototype.bind
<https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind>`_. It is provided here to work in environments that do not supportFunction.prototype.bind
.var homer = { name: "Homer", burp: function () { return this.name + " goes buuuuuurp"; } }; var func = buster.bind(homer, homer.burp); func(); // "Homer goes buuuuuurp" var func2 = buster.bind(homer, "burp"); func2(); // "Homer goes buuuuuurp"
-
buster.
create
()¶ buster.create(object);
Cross-browser implementation of Object.create.
buster.create
only supports creating a new object with the specified object as its prototype. It does not support property descriptors.
-
buster.
extend
()¶ buster.extend(target[, source1[, source2[, ...]]]);
Extends the target object by copying all the properties of all the sources onto it. Sources as processed in order. The method also returns the target object.
var target = { id: 42, num: 0 }; target = buster.extend(target, { id: 13, name: "One" }, { name: "Two", prop: "erty" }); //=> { id: 13, num: 0, name: "Two", prop: "erty" }
-
buster.
nextTick
()¶ buster.nextTick(callback);
Calls the callback on the next tick of the event loop. On Node.js this method simply delegates to
process.nextTick
. In the browser,nextTick
is emulated by passing the callback tosetTimeout(callback, 0)
.
-
buster.
functionName
()¶ buster.functionName(func);
Returns the name of the function, or an empty string if the
function
is a falsy value. The method tries three approaches, returning an empty string if all approaches fail:- Return
func.displayName
- Return
func.name
- Attempt to infer the name through
func.toString()
- Return
Event emitter¶
A standalone Node.js and browser compatible event emitter API.
-
eventEmitter.
create
()¶ var emitter = buster.eventEmitter.create();
Creates a new event emitter object.
-
eventEmitter.
addListener
()¶ emitter.addListener(event, listener[, thisObject])
Adds the listener function to the named event. The optional
thisObject
will be thethis
of the listener when called.emitter.addListener("myevent", function () { // ... });
-
eventEmitter.
on
()¶ emitter.on(event, listener[, thisObject]);
Alias to
addListener
.
-
eventEmitter.
once
()¶ emitter.once(event, listener[, thisObject]);
Like
addListener
, but is removed after one emission.emitter.once("myevent", function () { console.log("hello"); }); emitter.emit("myevent"); // Logs "hello" emitter.emit("myevent"); // Nothing happens
-
eventEmitter.
emit
()¶ emitter.emit(event[, arg1, arg2, ...]);
Emits the event, triggering all the listeners with the given arguments.
emitter.addListener("myevent", function (a, b, c) { console.log(a, b, c); }); emitter.emit("myevent"); // undefined, undefined, undefined emitter.emit("myevent", {}, "foo"); // {}, "foo", undefined
-
eventEmitter.
removeListener
()¶ emitter.removeListener(event, listener);
Removes the listener for that event.
var mylistener = function () {}; emitter.addListener("myevent", mylistener); emitter.removeListener("myevent", mylistener); emitter.emit("myevent"); // Does not call 'mylistener'
-
eventEmitter.
hasListener
()¶ emitter.hasListener(event, listener[, thisObject]);
Tests if the event emitter has the given listener for that event, optionally a listener for the given
thisObject
.var func1 = function () {}; var func2 = function () {}; var thisObj = {}; emitter.addListener("foo", func1); emitter.addListener("bar", func2, thisObj); emitter.hasListener("foo", func1); // true emitter.hasListener("foo", func2); // false emitter.hasListener("bar", func1); // false emitter.hasListener("bar", func2); // true emitter.hasListener("bar", func2, {}); // false emitter.hasListener("bar", func2, thisObj); // true