- Details
- Written by: Stanko Milosev
- Category: JavaScript
- Hits: 4541
It seems that javascript considers array as a pointer, therefore, simple assignment like:
a = b
will not copy values, variable a will just "point out" to variable b.
Consider following example:Â
var a = []; var b = []; a = [1, 2, 3, 4] b = a; b.splice(3);
In this case, variable a will be 1, 2, 3
Full example you can see here.
Solution is something like:Â
b = [].concat(a);
Taken from here.
- Details
- Written by: Stanko Milosev
- Category: JavaScript
- Hits: 4747
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script> function errorTimeOut(strInTest) { alert('I will wait 10 seconds, but no variables (error: Uncaught ReferenceError: strTest is not defined). ' + strInTest) } function errorAlert() { var strTest = "I am here!"; setTimeout("errorTimeOut(strTest)", 10000); } function correctTimeOut(strInTest) { alert('I was waiting 20 seconds, and everything is ok: ' + strInTest) } function correctAlert() { var strTest = "I am here!"; setTimeout(function() { correctTimeOut(strTest) }, 20000); } setTimeout(alert('I am fired immediately'), 10000); errorAlert(); correctAlert(); </script> </head> <body> </body> </html>
As you can see from previous code, setTimeout(alert('I am fired immediately'), 10000); will not work.
setTimeout("alert('I will wait')", 10000); - this will work, alert under quotes, but you can not pass varibles.
And the code:
function correctAlert() { var strTest = "I am here!"; setTimeout(function() { correctTimeOut(strTest) }, 20000); }
Will work properly.
- Details
- Written by: Stanko Milosev
- Category: JavaScript
- Hits: 4305
var tableProperties = { aoColumns: [] }; for (var i = 0; i < 9; ++i) { var obj = { _origColumnPosition: i }; tableProperties.aoColumns.push(obj); }
- Details
- Written by: Stanko Milosev
- Category: JavaScript
- Hits: 4327
String.prototype.test = function () { alert('prototype'); } var a = ""; a.test();