Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
(function(){
var defaultOptions = { /*константы*/ };
window.Timer = function Timer( options ){
//...
//здесь есть обращение к defaultOptions
//...
}
//...
})();<?
class Timer {
function __construct ($options) {
$defaultOptions = array(
'delay' => 20,
'stopFrame' => 0,
'loop' => true
);
foreach ($defaultOptions as $option => $values) $this[$option] = $option ? ($options[$option] || $defaultOptions[$option]) : $defaultOptions[$option];
$this->start = function() {
// code
};
$this->setActiveFrameElement = function( frameNumber ){
// code
};
$this->toString = function() {
// code
}
$this->setTask = function( new_task ) {
// code
}
$this->getKeyFrames = function(){
return $keyFrames;
}
$this->getTask = function(){
return $task;
}
}
}
var extend = function(to, from) {
for (var key in from)
if (from.hasOwnProperty(key))
to[key] = from[key];
return to;
};
//........................................................................
var options = {
foo: 1,
bar: 2
}
// Default options
var params = extend({
foo: 0
}, options);
params.foo //1
params.bar //2
//public var defaultOptions
var Foo = new function() {
//private
var private = 1;
var Foo = function() {
//...
};
//public
Foo.prototype = {
constructor: Foo,
foo: 1,
bar: function(param) {
return this.foo + param + private;
}
};
return Foo;
};
var object = new Foo;
object.foo; // 1
object.bar(1); // 3
var Extend = function(child, parent) {
for (var key in parent) {
if (parent.hasOwnProperty(key))
child[key] = parent[key];
}
var __new__ = function() {
this.constructor = child;
}
__new__.prototype = parent.prototype;
child.prototype = new __new__();
child.__super__ = parent.prototype;
return child;
};
function A(value) {
this.set = value;
};
A.prototype.get = function() {
return this.set;
};
function B(value) {
this.set = value;
};
Extend(B, A);
alert(new A(1).get()); // 1
alert(new B(2).get()); // 2
function C(value) {
this.set = value;
};
C.prototype.get = function(value) {
return B.__super__.get.call(this, arguments);
};
alert(new C(3).get()); // 3
for(var option in defaultOptions) this[option] = options && options[option]!==undefined ? options[option] : defaultOptions[option];
new functionName;
А вот в спецификации нет.
Javascript: ООП, прототипы, замыкания, «класс» Timer.js