Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

суббота, 25 июля 2015 г.

JavaScript. Patterns.

// Namespace
// Global Object
var MYAPP = {};
// Constructors
MYAPP.Foo = function () {};
MYAPP.Bar = function () {};
// Variable
MYAPP.baz = 'foo';
// Container Object
MYAPP.modules = {};
// Submodules
MYAPP.modules.module1 = {};

// Dependencies
var myFunction = function () {
  var event = YAHOO.util.Event,
      dom = YAHOO.util.Dom;
  
  // use event, dom ...
};

//myFunction(); // Uncaught ReferenceError: YAHOO is not defined

// Public and Private methods
function Foo() {
  var bar = 'baz';
  this.getBar = function() {
    return bar;
  };
}

//console.log((new Foo()).getBar()); // baz
//console.log((new Foo()).bar); // undefined

var Foo = (function () {
  // Private attribute
  var bar = 'baz';
  // Private method
  var boo = function () {
    return 'boo';
  };
  return {
    // Public (Privileged) method
    getBar: function () {
      return boo() + bar;
    }
  };
})();

console.log(Foo.getBar()); // boobaz
console.log(Foo.bar); // undefined
//Foo.boo(); // Uncaught TypeError: Foo.boo is not a function

// Private methods and Prototypes

function MyFoo() {
  var bar = 'bar';
  this.getBar = function () {
    return bar;
  };
}

MyFoo.prototype = (function () {
  var baz = 'baz';
  return {
    getBaz: function () {
      return baz;
    }
  };
})();

var myFoo = new MyFoo();
console.log(myFoo.getBar()); // bar
console.log(myFoo.getBaz()); // baz

Комментариев нет:

Отправить комментарий