<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
</body>
</html>
function typeOf(type) {
if ((typeof(type) !== 'undefined') && (typeof(type) !== 'boolean') && (typeof(type) !== 'number') && (typeof(type) !== 'string') && (typeof(type) !== 'function')) {
if (Object.prototype.toString.call(type) === '[object Array]') {
return 'array';
} else if (Object.prototype.toString.call(type) === '[object Null]') {
return 'null';
} else if ((Object.prototype.toString.call(type) === '[object Arguments]') || Object.prototype.toString.call(type) === '[object NodeList]') {
return 'array-like';
} else if (Object.prototype.toString.call(type) === '[object Object]') {
return 'object';
} else if (Object.prototype.toString.call(type) === '[object Date]') {
return 'date';
}
} else {
return typeof(type);
}
}
function shadowCopy(object) {
if (typeOf(object) === 'array') {
var newArray = object.slice((0));
return newArray;
} else if (typeOf(object) === 'object') {
var newObj = {};
for (var key in object) {
newObj[key] = shadowCopy(object[key]);
}
return newObj;
} else if (typeOf(object) === 'date') {
return new Date(object.getTime());
} else {
return object;
}
}
var a = { x: 1, y: 2, z: [1, 2, 3], w: new Date(2014, 1, 1, 12, 0, 0) };
var b = shadowCopy(a); // b — это отдельный объект
b.x = 10;
console.log(a.x); // 1
// a.z и b.z указывают на разные массивы:
b.z.push(4);
console.log(a.z); // [1, 2, 3]
// a.w и b.w независимы друг от друга
b.w.setYear(2015);
console.log(a.w.getYear()); // 2014
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |