Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function NewObj() {}
NewObj.prototype.nonStaticMethod = function ...
NewObj.staticMethod = function ...
The term «polymorphism» was imposed much later (I think by Peter Wegner) and it isn't quite valid
var foo = function(){this.b = 5; return 6;}
var o = new foo();
alert(o.b);
function Car() {
var dublicate = this; // this в таймере совсем не тот
var speed = 0; // и у пешехода есть только одна возможность изменить это свойство :)
var maxSpeed = 120; // это нужно снаружи?
var dSpeed = 10; // это нужно снаружи?
var going = false; // может быть полезно снаружи
var stoping = null; // может быть полезно снаружи
// var mileage = 0; // реализовывать не буду, но менять снаружи это явно не положено
this.go = function() {
// газ
if (stoping) onStop();
if (going) return;
going = true;
speed = 10;
};
this.stop = function() {
// тормозим
if (!going || stoping) return;
stoping = window.setInterval(stopIterate, 10);
};
this.faster = function() {
// быстрее
if (stoping) return;
if (speed + dSpeed <= maxSpeed) speed += 10;
};
this.slower = function() {
// сбавляем скорость
if (stoping) return;
if (speed - dSpeed > 0) {
speed -= 10;
} else {
speed = 0;
going = false;
}
};
function stopIterate() {
// зачем светофору этот метод?
dublicate.slower();
if (!going) onStop();
}
function onStop() {
// встали
window.clearInterval(stoping);
stoping = false;
going = false;
}
}nearestCar.speed = -50;зато вот так нельзя сделать
if(foo.bar == null) foo.bar = new Bar() // и еще с десяток строчек сборки этого самого Bar-а.
var bar = foo.getBar(); // что-то делаем с Bar
class A(object):
def __init__(self):
self.__a = 10
# только для примера
def get_a(self):
return self.__a
a = A()
a.__a # ошибка, __a - private
a.get_a() # 10, геттер для private __a
a._A__a # вот он и "private" __a
function Q() {
var a = 5;
this.change = function() { a = 10; }
this.alert = function() { alert(a); };
}
function W() {
Q.call(this);
}
w1 = new W();
w1.change();
w2 = new W();
w1.alert(); // 10
w2.alert(); // 5
Расплодившиеся подпорки как раз показывают наличие в языке недостатков, которыми нельзя пренебрегать.
function Foo() {}
function Bar() {}
Bar.prototype = new Foo();
var foo = new Foo();
var bar = new Bar();
alert(foo instanceof Object)
alert(foo instanceof Foo)
alert(foo instanceof Bar)
alert(bar instanceof Object)
alert(bar instanceof Foo)
alert(bar instanceof Bar)
true, true, false true, true, true
alert(1..toString());
jQuery — это большей частью сервисная библиотека дл работы с DOM, она нужна при любой реализации ООПкакое отношение к «реализации ООП» имеет jQuery?
Нужны ли «приватные» свойства объектов в Javascript?