Kā starpniekservera objekti darbojas JavaScript?

Kā starpniekservera objekti darbojas JavaScript?
Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

JavaScript starpniekservera objekts ļauj pārtvert un pielāgot cita objekta darbību, nemainot oriģinālu.





Izmantojot starpniekservera objektus, varat pārbaudīt datus, nodrošināt papildu funkcionalitāti un kontrolēt piekļuvi rekvizītiem un funkcijām.





Uzziniet visu par starpniekservera objektu izmantošanu un to, kā tos izveidot JavaScript.





Starpniekservera objekta izveide

Programmā JavaScript varat izveidot starpniekservera objektus, izmantojot Starpniekserveris konstruktors . Šis konstruktors izmanto divus argumentus: a mērķis iebilst, lai apliktu starpniekserveri un a apdarinātājs objekts, kura īpašības nosaka starpniekservera uzvedību, veicot darbības.

kā izdzēst Hotmail kontu

Tas izmanto šos argumentus un izveido objektu, ko varat izmantot mērķa objekta vietā. Šis izveidotais objekts var atkārtoti definēt galvenās darbības, piemēram, rekvizītu iegūšanu, iestatīšanu un definēšanu. Varat arī izmantot šos starpniekservera objektus, lai reģistrētu īpašuma piekļuves un validētu, formatētu vai sanitizētu ievades.



Piemēram:

 const originalObject = { 
  foo: "bar"
}

const handler = {
  get: function(target, property) {
    return target[property];
  },
  set: function(target, property, value) {
    target[property] = value;
  }
};

const proxy = new Proxy(originalObject, handler)

Šis kods izveido mērķa objektu, oriģinālais objekts , ar vienu īpašumu, foo , un apstrādātāja objekts, apdarinātājs . Apdarinātāja objektā ir divas īpašības, gūt un komplekts . Šīs īpašības ir pazīstamas kā lamatas.





Starpniekservera objekta slazds ir funkcija, kas tiek izsaukta ikreiz, kad veicat noteiktu darbību starpniekservera objektā. Slazdi ļauj pārtvert un pielāgot starpniekservera objekta uzvedību. Piekļūstot rekvizītam no starpniekservera objekta, tiek izsaukts gūt slazds un starpniekservera objekta rekvizīta modificēšana vai manipulēšana izsauc the komplekts slazds.

Visbeidzot, kods izveido starpniekservera objektu ar Starpniekserveris konstruktors. Tas pāriet oriģinālais objekts un apdarinātājs kā mērķa objektu un apdarinātāju.





Izmantojot starpniekservera objektus

Starpniekservera objektiem JavaScript ir vairāki lietojumi, daži no tiem ir šādi.

Funkcionalitātes pievienošana objektam

Varat izmantot starpniekservera objektu, lai aplauztu esošu objektu un pievienotu jaunas funkcijas, piemēram, reģistrēšanu vai kļūdu apstrāde , nemainot sākotnējo objektu.

Lai pievienotu jaunu funkcionalitāti, jums būs jāizmanto Starpniekserveris konstruktoru un definējiet vienu vai vairākus slazdus darbībām, kuras vēlaties pārtvert.

Piemēram:

 const userObject = { 
  firstName: "Kennedy",
  lastName: "Martins",
  age: 20,
};

const handler = {
  get: function (target, property) {
    console.log(`Getting property "${property}"`);
    return target[property];
  },
  set: function (target, property, value) {
    console.log(`Setting property "${property}" to value "${value}"`);
    target[property] = value;
  },
};

const proxy = new Proxy(userObject, handler);

console.log(proxy.firstName); // Getting property "firstName" Kennedy
console.log(proxy.lastName); // Getting property "lastName" Martins
proxy.age = 23; // Setting property "age" to value "23"

Šis koda bloks papildina funkcionalitāti, izmantojot starpniekservera slazdus, gūt un komplekts . Tagad, kad mēģināt piekļūt vai modificēt rekvizītu userObject , starpniekservera objekts vispirms reģistrēs jūsu darbību konsolē, pirms piekļūs īpašumam vai mainīs to.

Datu apstiprināšana pirms to iestatīšanas objektam

Varat izmantot starpniekservera objektus, lai pārbaudītu datus un pārliecinātos, ka tie atbilst noteiktiem kritērijiem pirms to iestatīšanas objektam. To var izdarīt, definējot validācijas loģiku sadaļā a komplekts lamatas apdarinātājs objektu.

kā izdzēst hibernācijas failu Windows 10

Piemēram:

 const userObject = { 
  firstName: "Kennedy",
  lastName: "Martins",
  age: 20,
};

const handler = {
  get: function (target, property) {
    console.log(`Getting property "${property}"`);
    return target[property];
  },
  set: function (target, property, value) {
    if (
      property === "age" &&
      typeof value == "number" &&
      value > 0 &&
      value < 120
    ) {
      console.log(`Setting property "${property}" to value "${value}"`);
      target[property] = value;
    } else {
      throw new Error("Invalid parameter. Please review and correct.");
    }
  },
};

const proxy = new Proxy(userObject, handler);
proxy.age = 21;

Šis koda bloks pievieno validācijas noteikumus komplekts slazds. Varat piešķirt jebkuru vērtību vecums īpašums uz a userObject piemēram. Taču, izmantojot pievienotos validācijas noteikumus, vecuma rekvizītam varat piešķirt jaunu vērtību tikai tad, ja tas ir skaitlis, kas ir lielāks par 0 un mazāks par 120. Jebkura vērtība, ko mēģināt iestatīt vecums rekvizīts, kas neatbilst nepieciešamajiem kritērijiem, izraisīs kļūdu un izdrukās kļūdas ziņojumu.

Piekļuves kontrole objekta rekvizītiem

Varat izmantot starpniekservera objektus, lai paslēptu noteiktas objekta īpašības. Dariet to, definējot ierobežojumu loģiku gūt slazdi rekvizītiem, kuriem vēlaties kontrolēt piekļuvi.

Piemēram:

 const userObject = { 
  firstName: "Kennedy",
  lastName: "Martins",
  age: 20,
  phone: 1234567890,
  email: "foo@bar.com",
};

const handler = {
  get: function (target, property) {
    if (property === "phone" || property === "email") {
      throw new Error("Access to info denied");
    } else {
      console.log(`Getting property "${property}"`);
      return target[property];
    }
  },
  set: function (target, property, value) {
    console.log(`Setting property "${property}" to value "${value}"`);
    target[property] = value;
  },
};

const proxy = new Proxy(userObject, handler);

console.log(proxy.firstName); // Getting property "firstName" Kennedy
console.log(proxy.email); // Throws error

Iepriekš minētais koda bloks pievieno noteiktus ierobežojumus gūt slazds. Sākotnēji varat piekļūt visiem pieejamajiem īpašumiem userObject . Pievienotie noteikumi neļauj piekļūt sensitīvai informācijai, piemēram, lietotāja e-pastam vai tālrunim. Mēģinot piekļūt kādam no šiem īpašumiem, tiks parādīta kļūda.

Citi starpniekservera slazdi

The gūt un komplekts slazdi ir visizplatītākie un noderīgākie, taču ir arī 11 citi JavaScript starpniekservera slazdi. Viņi ir:

  • pieteikties : pieteikties trap darbojas, kad izsaucat funkciju starpniekservera objektā.
  • konstruēt : konstruēt trap darbojas, kad izmantojat jauno operatoru, lai izveidotu objektu no starpniekservera objekta.
  • dzēst īpašumu : dzēst īpašumu slazds darbojas, kad izmantojat dzēst operatoru, lai noņemtu rekvizītu no starpniekservera objekta.
  • ir - ir slazds darbojas, kad izmantojat iekšā operatoru, lai pārbaudītu, vai starpniekservera objektā pastāv rekvizīts.
  • ownKeys - ownKeys slazds darbojas, kad zvanāt vai nu Object.getOwnPropertyNames vai Object.getOwnPropertySymbols funkciju starpniekservera objektā.
  • getOwnPropertyDescriptor - getOwnPropertyDescriptor slazds darbojas, kad zvanāt Object.getOwnPropertyDescriptor funkciju starpniekservera objektā.
  • defineProperty - defineProperty slazds darbojas, kad zvanāt Object.defineProperty funkciju starpniekservera objektā.
  • novērst paplašinājumus - novērst paplašinājumus slazds darbojas, kad zvanāt Object.preventExtensions funkciju starpniekservera objektā.
  • ir Paplašināms - ir Paplašināms slazds darbojas, kad zvanāt Object.isExtensible funkciju starpniekservera objektā.
  • getPrototypeOf - getPrototypeOf slazds darbojas, kad zvanāt Object.getPrototypeOf funkciju starpniekservera objektā.
  • setPrototypeOf - setPrototypeOf slazds darbojas, kad zvanāt Object.setPrototypeOf funkciju starpniekservera objektā.

komplekts un gūt slazdus, ​​varat izmantot šos slazdus, ​​lai objektam pievienotu jaunus funkcionalitātes, validācijas un vadības slāņus, nemainot oriģinālu.

cik daudz vietas cietajā diskā man vajag spēlēm

Starpniekservera objektu mīnusi

Starpniekservera objekti var būt spēcīgs instruments, lai objektam pievienotu pielāgotu funkcionalitāti vai validāciju. Bet tiem ir arī daži iespējamie trūkumi. Viens no šādiem trūkumiem ir atkļūdošanas grūtības, jo var būt grūti redzēt, kas notiek aizkulisēs.

Starpniekservera objektus var būt arī grūti izmantot, it īpaši, ja jūs tos nezināt. Pirms starpniekservera objektu izmantošanas kodā rūpīgi jāapsver šie trūkumi.