JavaScriptтеги прототиптер эмне?
sobes.tech AI
AIден жооп
JavaScript объекттери башка объекттерден прототип механизм аркылуу мурас алууга мүмкүнчүлүк берет. JavaScriptтеги ар бир объекттин ички жашырылган өзгөчөлүгү [[Prototype]], ал башка объектке көрсөтүп турат, ал анын прототипи болуп саналат. Объекттин өзүнүн мүлкү же методуна кайрылыганда, JavaScript движок алгач аны объекттен издейт. Эгер таба албаса, ал [[Prototype]] өзгөчөлүгүнө кайрылып, прототипте издейт. Бул процесс прототиптер чынжырында кайра-кайра кайталанып, мүлк табылмайынча же nullке жеткенче уланат.
Негизги түшүнүктөр:
- Прототип чынжыры:
[[Prototype]]аркылуу байланышкан объекттердин тизмеси. - Мурас алуу: Объекттер өз прототиптеринин мүлктөрүн жана методдорун мурас алат.
__proto__: Тарыхый колдонулган (бирок баштапкы стандарт эмес) өзгөчөлүк[[Prototype]]ка жетүү үчүн. АзырObject.getPrototypeOf()колдонуу сунушталат.prototype: Конструктордун өзгөчөлүгү, ал[[Prototype]]аркылуу түзүлгөн объекттердин прототипи болуп саналат.
Конструктор жана прототип менен мисал:
// Конструктор
function Person(name, age) {
this.name = name;
this.age = age;
}
// Прототипке метод кошуу
Person.prototype.sayHello = function() {
console.log("Салам, менин атым " + this.name);
};
// Мисал түзүү
const person1 = new Person("Alice", 30);
// Прототиптеги методду чакыруу
person1.sayHello(); // Чыгуу: Салам, менин атым Alice
// Мисалдын прототипине жетүү
console.log(Object.getPrototypeOf(person1) === Person.prototype); // Чыгуу: true
Бул мисалда:
Person— бул функция-конструктор.Person.prototype— объект, ал бардыкnew Person()аркылуу түзүлгөн мисалдар үчүн прототип.sayHello— прототипке кошулган метод. БардыкPersonмисалдары бул методду мурас алат.person1.sayHello()чакырганда, JavaScript движокsayHello-дуperson1ичинен издейт. Эгер таба албаса, ал[[Prototype]]-ге кайрылып,Person.prototypeичинен табат.
Прототиптер эс тутумду эффективдүү колдонууга мүмкүндүк берет, анткени методдор жана жалпы мүлк прототипте сакталат, ар бир объекттин мисалында дублёцияланбайт.