рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдлреА рд╕рд░рд▓ рднрд╛рд╖рд╛ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рдлреА рд▓рдЪреАрд▓реА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрд╛ рдЕрдиреНрдп рдкреНрд░рд╕рд┐рджреНрдз рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдг, рдЬреИрд╕реЗ рдХрд┐ рдЬрд╛рд╡рд╛ред рдЦреИрд░, рдпрд╛ рдЬрд╛рд╡рд╛, рд░реВрдмреА, рдпрд╛ .NET рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдХрд╛рд░рдгред
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХреБрдЫ рд╕рдмрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЕрднреА рднреА рдЧрд▓рдд рд╕рдордЭреА рдЧрдИ рд╣реИрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪред рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдбреЗрдЯрд╛ (рдЧреБрдг рдФрд░ рдЪрд░) рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдбреЗрдЯрд╛ рдЦреЛрдЬреЗрдВ рджреЛ рдЪреАрдЬреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВ: рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рд░рд╛рд╕рдд рдФрд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рдЪреЗрдиред рдЗрди рджреЛрдиреЛрдВ рддрдВрддреНрд░реЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдирд┐рддрд╛рдВрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░, рдЕрдХреНрд╕рд░, рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рднреАред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░, рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реНрдХреИрди рдХреА рдЬрд╛рддреА рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдЬрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ
new
рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } var p1 = new Person('John', 'Doe'); var p2 = new Person('Robert', 'Doe');
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ,
p1
рдФрд░
p2
рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ
Person
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╡реЗ
Person
рд╕реНрд╡рддрдВрддреНрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:
console.log(p1 instanceof Person); // 'true' console.log(p2 instanceof Person); // 'true' console.log(p1 === p2); // 'false'
рдПрдХ рдмрд╛рд░ рдЬрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдкрд╛рд╕ рдЧреБрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬрд┐рд╕реЗ
prototype
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
prototype
, рдЬреЛ рдХрд┐ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рдмрд╛рд░-рдмрд╛рд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдКрдкрд░ рдХреЗ рд╕реНрддрд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ред рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдореЗрд╢рд╛
Object.prototype
(рдпрд╛рдиреА, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░) рд╣реЛрддрд╛ рд╣реИ; рдЗрд╕рдореЗрдВ
hasProperty()
,
isPrototypeOf()
,
isPrototypeOf()
, рдЖрджрд┐ рдХреЗ рддрд░реАрдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдирдИ рдЖрд╡реГрддреНрддрд┐ рдмрдирд╛рддреЗ рд╕рдордп (
new
рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ), рдпрд╣ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рддрдХред
// Person // 'getFullName': Person.prototype.getFullName = function() { return this.firstName + ' ' + this.lastName; } // p1 console.log(p1.getFullName()); // 'John Doe' // p1 'prototype'... console.log(p1.prototype); // 'undefined' console.log(p1.prototype.getFullName()); //
рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рд╕реВрдХреНрд╖реНрдо рдмрд┐рдВрджреБ рд╣реИ: рднрд▓реЗ рд╣реА
p1
рдХреЛ
getFullName
рд╡рд┐рдзрд┐
getFullName
рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рднреА рдпрд╣ рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд░рдЦреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
Person
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдерд╛ред
(рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░
__proto__
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдВрдХ рдХреЛ
__proto__
рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░реНрдо рдХреЛ
__proto__
рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ ECMAScript рдорд╛рдирдХ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ )ред
рдЪреВрдВрдХрд┐
Person
p1
рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ
p1
рдореЗрдВ
getFullName
рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
// p1.getFullName, ** p1.prototype.getFullName, // p1.prototype : p1.getFullName = function(){ return ' '; }
рдЕрдм
p1
рдХреА рдЕрдкрдиреА
getFullName
рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реИред рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг
p2
рдореЗрдВ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИред рддрджрдиреБрд╕рд╛рд░,
p1.getFullName
рд▓рд┐рдП рдХреЙрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ
p1
рдХреА рдореВрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдЦреАрдВрдЪрддреА рд╣реИ, рдЬрдмрдХрд┐
p2.getFullName()
рд▓рд┐рдП рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП
Person
ред
console.log(p1.getFullName()); // ' ' console.log(p2.getFullName()); // 'Robert Doe'

рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдПрдХ рдФрд░ рдЪреАрдЬрд╝ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ:
function Parent() { this.someVar = 'someValue'; }; // Parent, 'sayHello' Parent.prototype.sayHello = function(){ console.log('Hello'); }; function Child(){ // // . Parent.call(this); }; // Child 'otherVar'... Child.prototype.otherVar = 'otherValue'; // ... Child Parent // ( 'otherVar', // Child 'otherVar' ) Child.prototype = Object.create(Parent.prototype); var child = new Child(); child.sayHello(); // 'Hello' console.log(child.someVar); // 'someValue' console.log(child.otherVar); // 'undefined'
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмрд╛рдж рдмрдЪреНрдЪреЗ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (
hasOwnProperty
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ,hasOwnProperty
рд╕рддреНрдпрд╛рдкрд┐рддhasOwnProperty
рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ)ред - рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рджреЗрдЦреЗрдВред
- рдпрджрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред
- рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЬрдм рддрдХ рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддреАред
- рдЕрдЧрд░ рд╣рдореЗрдВ Object.prototyp рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реЗрдЯ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╕рдордЭрдирд╛ рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд░реЗ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡ (рдХрднреА-рдХрднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп) рдХреЗ рдХрд╛рд░рдг рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ V8 рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢ рдЬреИрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЦреЛрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЬрд╛рд╡рд╛ рдпрд╛ рд╕реНрдореЙрд▓рдЯреЙрдХ рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЛ рдмрд╣реБрдд рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЦреЛрдЬ
рдПрдХ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреЛрдЬ рдЗрдВрдЬрди рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рд╣реИрдВ:
- рд╡реИрд╢реНрд╡рд┐рдХ, рдЬрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рд╕реНрдерд╛рдиреАрдп, рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдПрдХ рд╕реНрдЯреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреИрдХ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрддрд╛ рд╣реИред рд╣рд░ рдмрд╛рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░, рдПрдХ рдирдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╕рдВрджрд░реНрдн рд╕реНрдЯреИрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
// var message = 'Hello World'; var sayHello = function(n){ // 1 var i = 0; var innerSayHello = function() { // 2 console.log((i + 1) + ': ' + message); // 2 } for (i = 0; i < n; i++) { innerSayHello(); } // 1 }; sayHello(3); // : // 1: Hello World // 2: Hello World // 3: Hello World
рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЪрд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд╛рдордХ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╕реНрддреБ рд╣реИред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рддрдХ рдЙрдкрд▓рдмреНрдз рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рдвреЗрд░ рд╣реИред (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдХреНрд░рд┐рдпрдг рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рд╕рдВрджрд░реНрдн, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджрд┐рдП рдЧрдП рддрд░реНрдХ рдФрд░ рджреЛ "рд╡рд┐рд╢реЗрд╖" рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕:
this
рдФрд░
arguments
)ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрд░реЗрдЦ рдореЗрдВ
this
рдХреИрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ
window
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдЬреИрд╕реЗ
console
рдФрд░
location
ред
рд╕реНрдХреЛрдк рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЪрд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп, рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреЛ рдкрд╣рд▓реЗ рд╡рд╛рдВрдЫрд┐рдд рдЪрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдореЗрд▓ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдЧрд▓реЗ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЬрдм рддрдХ рд╡рд╛рдВрдЫрд┐рдд рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдпрджрд┐ рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓рд╛, рддреЛ рдПрдХ
ReferenceError
ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрджрд┐
try-catch
рдпрд╛ рдмреНрд▓реЙрдХ рдХреЗ
with
рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдПрдХ рдирдпрд╛ рджрд╛рдпрд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рджреГрд╢реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдФрд░ рд░рдЦреА рдЬрд╛рддреА рд╣реИред
function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; }; function persist(person) { with (person) { // 'person' // "with", // 'firstName' 'lastName', person.firstName // person.lastName if (!firstName) { throw new Error('FirstName is mandatory'); } if (!lastName) { throw new Error('LastName is mandatory'); } } try { person.save(); } catch(error) { // , 'error' console.log('Impossible to store ' + person + ', Reason: ' + error); } } var p1 = new Person('John', 'Doe'); persist(p1);
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕реНрдХреЛрдк рдХрд╛ рджрд╛рдпрд░рд╛ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмреНрд▓реЙрдХ рд╕реНрддрд░ рдкрд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рдирд╣реАрдВ рд╣реИред
for (var i = 0; i < 10; i++) { /* ... */ } // 'i' ! console.log(i); // '10'
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдЪрд░ рдХрд╛ "рдЬреАрд╡рди" (рдпрд╛рдиреА, рдЧреБрдВрдЬрд╛рдЗрд╢) рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд╣реАрдВред рдореБрдЭреЗ рд╕реНрдХреЛрдк рдЪреЗрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдХреНрд░рд┐рдпрдг рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рд▓реАрдЯ рд╣реЛрдиреЗ рддрдХ рд╡рд╣реАрдВ рд░рд╣рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмреНрд▓реЙрдХ-рд▓реЗрд╡рд▓ рд╕реНрдХреЛрдк рдХреЛ рдирдП
let
рдХреАрд╡рд░реНрдб рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ 1.7 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ ECMAScript 6 рдХреЗ рд╕рд╛рде рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдХреАрд╡рд░реНрдб рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡
рдЪрд░ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реВрдХреНрд╖реНрдо рдФрд░ рдореБрд╢реНрдХрд┐рд▓ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рд╣рд░ рдмрд╛рд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдЪреЗрди рдпрд╛ рд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рдЬрд┐рди рд╕рд░реНрдЪ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рдпрд╛ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдпрд╣ рд▓реВрдк рдореЗрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд░реА рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рддреБрд░рдВрдд рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдкреНрд░рднрд╛рд╡ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдкреНрд░рдХреГрддрд┐ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл, рдЬреЛ рдХрдИ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
var start = new Date().getTime(); function Parent() { this.delta = 10; }; function ChildA(){}; ChildA.prototype = new Parent(); function ChildB(){} ChildB.prototype = new ChildA(); function ChildC(){} ChildC.prototype = new ChildB(); function ChildD(){}; ChildD.prototype = new ChildC(); function ChildE(){}; ChildE.prototype = new ChildD(); function nestedFn() { var child = new ChildE(); var counter = 0; for(var i = 0; i < 1000; i++) { for(var j = 0; j < 1000; j++) { for(var k = 0; k < 1000; k++) { counter += child.delta; } } } console.log('Final result: ' + counter); } nestedFn(); var end = new Date().getTime(); var diff = end - start; console.log('Total time: ' + diff + ' milliseconds');
рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд▓рдВрдмрд╛ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╡реГрдХреНрд╖ рдФрд░ рддреАрди рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рд╣реИрдВред рд╕рдмрд╕реЗ рдЧрд╣рд░реЗ рд▓реВрдк рдореЗрдВ, рдХрд╛рдЙрдВрдЯрд░
delta
рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдбреЗрд▓реНрдЯрд╛ рдХрд╛ рдореВрд▓реНрдп рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдкреЗрдбрд╝ рдХреЗ рдмрд╣реБрдд рдКрдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ! рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк
child.delta
рдХрд╣рддреЗ рд╣реИрдВ
child.delta
рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЛ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдкреНрд░рддрд┐рдХреВрд▓ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ
nestedFn
рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
function nestedFn() { var child = new ChildE(); var counter = 0; var delta = child.delta; // cache child.delta value in current scope for(var i = 0; i < 1000; i++) { for(var j = 0; j < 1000; j++) { for(var k = 0; k < 1000; k++) { counter += delta; // no inheritance tree traversal needed! } } } console.log('Final result: ' + counter); } nestedFn(); var end = new Date().getTime(); var diff = end - start; console.log('Total time: ' + diff + ' milliseconds');
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЫреЛрд░реЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди
child.delta
рдХрд╛ рдореВрд▓реНрдп рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛; рдЕрдиреНрдпрдерд╛, рд╣рдореЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдореМрдЬреВрджрд╛ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдореВрд▓реНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рддреЛ, рдЪрд▓реЛ
nestedFn
рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ
nestedFn
рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред
diego@alkadia:~$ node test.js Final result: 10000000000 Total time: 8270 milliseconds
рдЗрд╕реЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 8 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рд╣реИ:
diego@alkadia:~$ node test2.js Final result: 10000000000 Total time: 1143 milliseconds
рдЗрд╕ рдмрд╛рд░ рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрдХрдВрдбред рдмрд╣реБрдд рддреЗрдЬ!
рднрд╛рд░реА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ (рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде) рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдФрд░ рдЪрд░ (рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ "рдХреИрд╢рд┐рдВрдЧ" (рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ) рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд▓рд╛рдн рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, jQuery рдХреЛ рд▓реЗрдВред рдпрд╣ "рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ" рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ DOM рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ред рдЬрд┐рд╕ рдЖрд╕рд╛рдиреА рд╕реЗ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ "рдЪрдпрдирдХрд░реНрддрд╛" рдпрд╣ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рдЦреЛрдЬрдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЪрд░ рдореЗрдВ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдПрдХ рдареЛрд╕ рд╡реГрджреНрдзрд┐ рджреЗрддрд╛ рд╣реИред
// DOM $('.container') "n" for (var i = 0; i < n; i++) { $('.container').append(тАЬLine тАЬ+i+тАЭ<br />тАЭ); } // ... // , $('.container') , // DOM "n" var $container = $('.container'); for (var i = 0; i < n; i++) { $container.append("Line "+i+"<br />"); } // ... // DOM $('.container') , // DOM var $html = ''; for (var i = 0; i < n; i++) { $html += 'Line ' + i + '<br />'; } $('.container').append($html);
рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рджреЗрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рд╡рд╛рд▓реЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдЯрд╛ рдЦреЛрдЬ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рднрд╛рд╖рд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рди рдХреНрд▓реАрдирд░, рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреЛрдб рдФрд░ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдПрдЧрд╛ред