- you don't have to use var but if you don't the variable is defined globally (although it still can be deleted.) Seems like bad practice.
- everything appears to be call-by-value except for arrays and other objects, like functions. So if you wanted to change variable a you could make a an array and send the array.
- you can read the properties associated with an object with “Object.keys($(this))”
find all elements ids with class “buttonClass” | var elements = document.getElementsByClassName(“buttonClass”); for (var i = 0, len = elements.length; i < len; i++) { console.log(elements[i].id); } |
callback function when mouse leaves button_8 | $( document ).on( “vmouseout”, “#button_8”, function(){ |
set style of myPath2 | document.getElementById(“myPath2”).setAttribute('style',“animation:fade 500ms infinite; -webkit-animation:fade 500ms infinite;”); |
get caller of function | alert(“caller is ” + arguments.callee.caller.toString()); |
find all methods of an object | var methods = []; for (var m in obj) { if (typeof obj[m] == “function”) { methods.push(m); } } alert(methods.join(“,”)); |
loop through a set of values | [1,2,3,4].map(function(item) { alert(item); }) |
Sockets seem to work (in Firefox at least) with this Java bridge. Python script to work with js sockets Load data using ajax and json. stringify? json.parse? It would be possible to interpret even svg files in the browser using json.
- when using ajax with Phonegap it might be necessary to say in config.xml that you trust 127.0.0.1.
JSON:
- to save a JSON file, either print it to the screen or send it to a server as explained here.
Ajax:
- great example: http://www.tutorialspoint.com/json/json_ajax_example.htm
- nice tutorial: http://www.w3schools.com/ajax/ajax_intro.asp
- this slide lays it out: http://www.webstepbook.com/supplements-2ed/slides/chapter12-ajax-xml-json.shtml#slide50
singleton objects: do them with a “lazy initializer” i.e. this way:
- MyApp.getInstance = function(){
- if(MyApp.instance == null){
- MyApp.instance = new MyApp();
- }
- return MyApp.instance;
- };
- Then in the window environment create the instance: myApp = MyApp.getInstance();
wrapping a function:
If you have a function call and you need to send it parameters (such as $(document).on("vmousedown", myFunction) you can wrap the function inside an anonymous function i.e.\\ $(document).on("vmousedown", function() {\\ myFunction(parameter)});
Garbage Collection:
Console Fun
- to see all the event messages flying around:
monitorEvents(window);
- then to unsee:
unmonitorEvents(window);
Promises
Promises are always async and often used to prevent UI blocking when waiting for something like an I/O interface. If a function has a .then
then it is definitely calling a promise (or a “thenable” object but yeah that doesn't happen)
Creating the promise (producing)
myPromise = Promise(success, failure) { // do something that takes some time here if (succeeded) { success() { // what to return on success i.e. "3" or "hello"}; // this is not a function. It's just a return value else failure() { // what to return on failure }; // this is not a function but only a return value }
Calling or running the promise (consuming)
Using .then(onFulfilled, onRejected)
this is the less preferred method
myPromise.then( successFunction(value) { // do stuff here with value which was returned by 'success' above } failFunction(value) { // do stuff here with value returned by 'failure' above })
Using .catch
this is best practice in general
myPromise.then( successFunction(value) { // do stuff here with value returned by 'success' when declaring promise }) .catch(failFunction(value) { // do stuff here with value returned by 'failure' above. also called if an error in successFunction })
Arrow Notation
Category | Old Skool | Arrow Function |
---|---|---|
No Parameter | function fred() = {} | () ⇒ {} |
One Parameter | function fred(a) = {} | (a) ⇒ {} or a ⇒ {} (parens are optional when only 1 argument) |
Two Parameters | function fred(a,b) = {} | (a,b) ⇒ {} |