рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬреЛ PHP рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ "рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк" рдПрдХ рдЬреЗрдиреЗрд░рд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдХрдХреНрд╖рд╛рдПрдВ рд▓реЗрдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреБрдЫ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВред
рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдЗрдЯреЗрдВ рдмрд┐рдирд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╣реЛрддреА рд╣реИрдВред рдЕрдзрд┐рдХрддрдо рдЖрдк рдЬрд┐рд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЖрд╢рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИред
рдЖрд▓рд╕реНрдп рд╕реЗ рддрдбрд╝рдкрддреЗ рд╣реБрдП, рдореБрдЭрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдХрдХреНрд╖рд╛рдПрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реБрдЖ, рдореИрдВ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдлрд╛рдпрджреЗ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдХреНрд╖рд╛ рдХреНрдпрд╛ рд╣реИ? рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░рдХрд╛рд░ред рдФрд░ рдЖрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рд╕рдВрдмрдВрдз рдХреИрд╕реЗ рдмрдирд╛рдПрдВ? рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдИ рд╡рд╣ рдереА рдЗрд╕рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдФрд░ рдЪрд░реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрдЧрд╛ред
function Class(name, b, c) { window[name] = function(){ for(var v in c) { if (!c.hasOwnProperty(v)) this[v] = c[v]; } this.__bases = []; for(var i = 0; i < b.length; i++) { this.__bases.push([]); for (var v in b[i].__dict) { if (!c.hasOwnProperty(v) && v != 'construct') { this[v] = b[i].__dict[v]; } else { this.__bases[i][v] = function(obj, f) { if (typeof f == 'function') { return function() { f.apply(obj, arguments) }; } else { return f; } }(this, b[i].__dict[v]); } } } if (c.hasOwnProperty('construct')) { c['construct'].apply(this, arguments); } else { for(var i = 0; i < b.length; i++) { if (b[i].__dict.hasOwnProperty('construct')) { b[i].__dict['construct'].apply(this, arguments); } } } }; window[name].__dict = c; }
рдореНрдпреВрдЯреВрд▓реЛрдВ рдореЗрдВ, рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдХрдХреНрд╖рд╛рдПрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рдореБрдЭреЗ рдХреБрдЫ рд╕рдорд╛рди рдорд┐рд▓рд╛
Class('Person', [], { age: 0, name: '', construct: function(name, age) { this.name = name; this.age = age; }, who : function(){ return this.name + ' ' + this.age; } }); var v = new Person('Vova', 25); var w = new Person('Pavlik', 23); alert(w.who()); alert(v.who());
рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдШреЛрдВрд╕рд▓рд╛ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рднреА рдкреИрд░реЗрдВрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЛ рдмрд╛рд░реА-рдмрд╛рд░реА рд╕реЗ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ __bases рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
Class('Student', [Person], { subjects: [], construct: function(name, age, subjects) { this.__bases[0].construct(name, age); this.subjects = subjects; }, who : function(){ return 'Student '+ this.name + ' ' + this.age + ' ' + this.subjects.join(', '); } }); var v = new Student('Vova', 25, ['Maths', 'History']); alert(v.who());
рдпрд╣реАрдВ рдкрд░ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╢реЛрдз рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ред рдореИрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЗрд╕ рдкрджреНрдзрддрд┐ рдкрд░ рд░рд╛рдп рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдиреБрдХрд╕рд╛рди рдХреНрдпрд╛ рд╣реИрдВ?