Scope, Closure

Daniel Steigerwald

JavaScript

// http://daniel.steigerwald.cz (MIT Licensed)

// tohle vše jsou objekty
var array = [];
var fn = function() { };
var regex = /a/;

// lze jim přiřadit hodnotu
array.someProperty = 1;
fn['someProperty'] = 2; // alternativní zápis
regex.someProperty = 3;

alert([
    array.someProperty,
    fn.someProperty,
    regex.someProperty
]);

// a předávají se referencí
var foo = function(a, f, r) {
    delete a.someProperty;
    delete f.someProperty;
    delete r.someProperty;
};
foo(array, fn, regex);

alert('Hodnoty jsou vymazány ' + [
    array.someProperty === undefined,
    fn.someProperty === undefined,
    regex.someProperty === undefined
]);

// object vytvořený zápisem zvaným 'object literal'
var object1 = { a: 'foo', b: 'bla', c: function() { } };

// objekt jako instance třídy Object
var object2 = new Object;

// objekt jako instance vlastní třídy
var Class = function() { };
var object3 = new Class;