Прототипҳо дар 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]]person1(які роўныPerson.prototype) і знаходзіць метад там.
Протатыпы забяспечваюць эфектыўнае выкарыстанне памяці, бо метады і агульныя ўласцівасці захоўваюцца ў протатыпе, а не дублююцца ў кожным экземпляры аб'екта.