window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster υπάρχει ήδη') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Κατανόηση της λέξης-κλειδί 'this' στο JavaScript - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2019-09-09
Ανάπτυξη λογισμικού

Κατανόηση της λέξης-κλειδί 'this' στο JavaScript

Lukasz Kolko

Στις περισσότερες αντικειμενοστραφείς γλώσσες προγραμματισμού, η λέξη-κλειδί 'this' έχει ειδική σημασία. Συνήθως αναφέρεται στο αντικείμενο που αποτελεί το πλαίσιο εκτέλεσης (δηλαδή στην τρέχουσα περίπτωση του αντικειμένου). Για παράδειγμα, το χρησιμοποιούμε όταν αναφερόμαστε σε μια ιδιότητα του αντικειμένου από μέσα: πληκτρολογούμε this.propertyName, και τότε το πλαίσιο είναι το αντικείμενο και το this αναφέρεται σε αυτό.

'αυτό' στο JavaScript

Στο JavaScript είναι πιο περίπλοκο, διότι όπου αυτό το αναφέρεται εξαρτάται όχι μόνο από τον τρόπο ορισμού της συνάρτησης αλλά και από τη μορφή κλήσης της.

Ρίξτε μια ματιά πώς αυτό το λειτουργεί ανάλογα με τον τόπο και τη μορφή της επίκλησης.

Παγκόσμιο πλαίσιο

Χρησιμοποιείται σε ένα καθολικό πλαίσιο συνδεδεμένο με το καθολικό αντικείμενο, όπως το παράθυρο σε ένα πρόγραμμα περιήγησης στο διαδίκτυο.

this; // παράθυρο

Μέσα στη μέθοδο αντικειμένου

Χρησιμοποιείται μέσα σε μια μέθοδο αντικειμένου που συνδέεται με το πλησιέστερο περιβάλλων αντικείμενο. Το αντικείμενο είναι το νέο πλαίσιο της αυτό το λέξη-κλειδί. Σημειώστε ότι δεν πρέπει να αλλάξετε function () στη σύνταξη ES6 fun: () => this.context επειδή θα αλλάξει το πλαίσιο.

const obj = {
  context: "object",
  fun: function() {
    return this.context,
  }
};

obj.fun(); // object

Σε αυτό το παράδειγμα με ένα φωλιασμένο αντικείμενο, αυτό το εξακολουθεί να παραπέμπει στο στενότερο περιβάλλον του.

const nestedObj = {
  context: "parent",
  child: {
    context: "child",
    fun: function() {
      return this.context,
    }
  }
};

nestedObj.child.fun(); // child

Λειτουργία χωρίς πλαίσιο

Χρησιμοποιείται μέσα σε μια συνάρτηση που δεν έχει πλαίσιο (δεν έχει αντικείμενο ως γονέα) συνδεδεμένο με το παγκόσμιο πλαίσιο, ακόμη και αν η συνάρτηση ορίζεται μέσα στο αντικείμενο.

Σημειώστε ότι χρησιμοποιούμε var context αντί για let/const context επειδή let και const να αλλάξετε τη μεταβλητή που περικλείεται στο πλαίσιο. var είναι πάντα πιο κοντά στο παγκόσμιο πλαίσιο εκτέλεσης. let και const δηλώνετε μεταβλητές μόνο σε μια τοπική εμβέλεια μπλοκ.

var context = "global",

const obj = {
  context: "object",
  funA: function() {
    function funB() {
      const context = "function",
      return this.context,
    }
    return funB(); // κλήση χωρίς πλαίσιο
  }
};

obj.funA(); // global

Μέσα στη συνάρτηση του κατασκευαστή

Χρησιμοποιείται μέσα σε μια συνάρτηση που είναι ο κατασκευαστής του νέου αντικειμένου που συνδέεται με αυτήν.

var context = "global",

function Obj() {
  this.context = "Obj context",
}

const obj = new Obj(),
obj.context; // Obj context

Εντός συνάρτησης που ορίζεται στην αλυσίδα πρωτοτύπων

Χρησιμοποιείται μέσα σε μια συνάρτηση που ορίζεται στην αλυσίδα πρωτοτύπων για τη δημιουργία ενός αντικειμένου που συνδέεται με αυτήν.

const ProtoObj = {
  fun: function() {
    return this.name,
  }
};

const obj = Object.create(ProtoObj),
obj.name = "foo",
obj.fun(); // foo

Μέσα στο call() και τις συναρτήσεις apply()

call() και apply() είναι JavaScript λειτουργίες. Με αυτές, ένα αντικείμενο μπορεί να χρησιμοποιήσει μεθόδους που ανήκουν σε ένα άλλο αντικείμενο. call() δέχεται ορίσματα ξεχωριστά όπου apply() τα λαμβάνει ως πίνακα.

αυτό το συνδέεται εδώ με το νέο πλαίσιο που αλλάζει στο call() και apply() μέθοδοι.

const objA = {
  context: "objA",
  fun: function() {
    console.log(this.context, arguments),
  }
};

const objB = {
  context: "objB"
};

objA.fun(1, 2); // objA, [1, 2]
objA.fun.call(objB, 1, 2, 3); // objB, [1, 2, 3]
objA.fun.apply(objB, [1, 2, 3, 4]); // objB, [1, 2, 3, 4]

Μέσα στη συνάρτηση bind()

bind() είναι επίσης μια μέθοδος JavaScript. Δημιουργεί μια νέα συνάρτηση που θα έχει αυτό το που ορίζεται στην πρώτη παράμετρο που περνάει στην bind()**.**

const objA = {
  context: "objA",
  fun: function() {
    console.log(this.context, arguments),
  }
};

const objB = {
  context: "objB"
};

const fun = objA.fun.bind(objB, 1, 2),
fun(3, 4); // objB, [1, 2, 3, 4]

Μέσα σε χειριστές συμβάντων

Χρησιμοποιείται σε οποιονδήποτε χειριστή συμβάντος (για παράδειγμα, addeventListener, onclick, attachEvent), συνδέεται με το στοιχείο DOM στο οποίο συνδέθηκε το συμβάν.

document.querySelector(".foo").addEventListener("click", function() {
  this; // αναφέρεται στο στοιχείο div `foo`
});

ES6 συνάρτηση βέλους

Χρησιμοποιείται εντός της συνάρτησης βέλους και δεσμεύεται πάντα στη λεξική της εμβέλεια. Μέσα στη συνάρτηση βέλους, δεν μπορείτε να αναθέσετε εκ νέου το αυτό το με οποιονδήποτε τρόπο.

const globalArrowFunction = () => this,

globalArrowFunction(); // Window

const obj = {
  context: "object",
  funA: () => this,
  funB: function() {
    return () => {
      return this.context,
    };
  }
};

obj.funA(); // Window
obj.funB()(); // object
Έκθεση Fronented για το 2020

Διαβάστε περισσότερα:

  • Οι μεγαλύτερες προκλήσεις με την ανάπτυξη προσαρμοσμένου λογισμικού
  • Ποιες είναι οι διαφορές μεταξύ ενός οίκου λογισμικού και ενός γραφείου στελέχωσης προσωπικού πληροφορικής;

Σχετικά άρθρα

Ανάπτυξη λογισμικού

Κατασκευάστε μελλοντικά ασφαλείς εφαρμογές Web: γνώσεις από την ομάδα εμπειρογνωμόνων του The Codest

Ανακαλύψτε πώς η The Codest υπερέχει στη δημιουργία κλιμακούμενων, διαδραστικών εφαρμογών ιστού με τεχνολογίες αιχμής, παρέχοντας απρόσκοπτη εμπειρία χρήστη σε όλες τις πλατφόρμες. Μάθετε πώς η τεχνογνωσία μας οδηγεί στον ψηφιακό μετασχηματισμό και την επιχειρηματική...

THECODEST
Ανάπτυξη λογισμικού

Top 10 εταιρείες ανάπτυξης λογισμικού με έδρα τη Λετονία

Μάθετε για τις κορυφαίες εταιρείες ανάπτυξης λογισμικού της Λετονίας και τις καινοτόμες λύσεις τους στο τελευταίο μας άρθρο. Ανακαλύψτε πώς αυτοί οι τεχνολογικοί ηγέτες μπορούν να βοηθήσουν στην ανύψωση της επιχείρησής σας.

thecodest
Λύσεις Enterprise & Scaleups

Βασικά στοιχεία ανάπτυξης λογισμικού Java: Α Guide to Outsourcing Successfully (Οδηγός για την επιτυχή εξωτερική ανάθεση)

Εξερευνήστε αυτόν τον βασικό οδηγό για την επιτυχή ανάπτυξη λογισμικού outsourcing Java για να αυξήσετε την αποδοτικότητα, να αποκτήσετε πρόσβαση στην τεχνογνωσία και να οδηγήσετε την επιτυχία των έργων με The Codest.

thecodest
Ανάπτυξη λογισμικού

Ο απόλυτος οδηγός για το Outsourcing στην Πολωνία

Η έξαρση της outsourcing στην Πολωνία οφείλεται στις οικονομικές, εκπαιδευτικές και τεχνολογικές εξελίξεις, που ευνοούν την ανάπτυξη της πληροφορικής και το φιλικό προς τις επιχειρήσεις κλίμα.

TheCodest
Λύσεις Enterprise & Scaleups

Ο πλήρης οδηγός εργαλείων και τεχνικών ελέγχου πληροφορικής

Οι έλεγχοι ΤΠ διασφαλίζουν ασφαλή, αποτελεσματικά και συμβατά συστήματα. Μάθετε περισσότερα για τη σημασία τους διαβάζοντας ολόκληρο το άρθρο.

The Codest
Jakub Jakubowicz CTO & Συνιδρυτής

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek