JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


JavaScript -objekkonstrukteurs


Voorbeeld

function Person(first, last, age, eye) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eye;
}

Dit word as goeie praktyk beskou om konstruktorfunksies met 'n hoofletter eerste letter te noem.


Voorwerptipes (Blueprints) (Klasse)

Die voorbeelde uit die vorige hoofstukke is beperk. Hulle skep slegs enkele voorwerpe.

Soms het ons 'n " bloudruk " nodig om baie voorwerpe van dieselfde "tipe" te skep.

Die manier om 'n "voorwerptipe" te skep, is om 'n objekkonstruktorfunksie te gebruik .

In die voorbeeld hierbo function Person()is 'n objekkonstruktorfunksie.

Voorwerpe van dieselfde tipe word geskep deur die konstruktorfunksie met die newsleutelwoord:

const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");


Die hierdie sleutelwoord

In JavaScript is die ding wat genoem thisword die voorwerp wat die kode "besit".

Die waarde van this, wanneer dit in 'n voorwerp gebruik word, is die voorwerp self.

In 'n konstruktor het funksie thisnie 'n waarde nie. Dit is 'n plaasvervanger vir die nuwe voorwerp. Die waarde van thissal die nuwe voorwerp word wanneer 'n nuwe voorwerp geskep word.

Let daarop dat thisdit nie 'n veranderlike is nie. Dit is 'n sleutelwoord. Jy kan nie die waarde van verander nie this.


Voeg 'n eiendom by 'n voorwerp

Dit is maklik om 'n nuwe eiendom by 'n bestaande voorwerp te voeg:

Voorbeeld

myFather.nationality = "English";

Die eiendom sal by myFather gevoeg word. Nie vir myMoeder nie. (Nie teen enige ander persoon beswaar nie).


Voeg 'n metode by 'n objek

Dit is maklik om 'n nuwe metode by 'n bestaande voorwerp te voeg:

Voorbeeld

myFather.name = function () {
  return this.firstName + " " + this.lastName;
};

Die metode sal by myFather gevoeg word. Nie vir myMoeder nie. (Nie teen enige ander persoon beswaar nie).


Voeg 'n eiendom by 'n konstruktor

Jy kan nie 'n nuwe eienskap by 'n objekkonstruktor voeg op dieselfde manier as wat jy 'n nuwe eienskap by 'n bestaande voorwerp voeg nie:

Voorbeeld

Person.nationality = "English";

Om 'n nuwe eienskap by 'n konstruktor te voeg, moet jy dit by die konstruktorfunksie voeg:

Voorbeeld

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.nationality = "English";
}

Op hierdie manier kan voorwerpeienskappe verstekwaardes hê.


Voeg 'n metode by 'n konstruktor

Jou konstruktorfunksie kan ook metodes definieer:

Voorbeeld

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.name = function() {
    return this.firstName + " " + this.lastName;
  };
}

Jy kan nie 'n nuwe metode by 'n objekkonstruktor voeg op dieselfde manier as wat jy 'n nuwe metode by 'n bestaande voorwerp voeg nie.

Die byvoeging van metodes by 'n objekkonstruktor moet binne die konstruktorfunksie gedoen word:

Voorbeeld

function Person(firstName, lastName, age, eyeColor) {
  this.firstName = firstName; 
  this.lastName = lastName;
  this.age = age;
  this.eyeColor = eyeColor;
  this.changeName = function (name) {
    this.lastName = name;
  };
}

Die changeName()-funksie ken die waarde van naam toe aan die persoon se lastName-eienskap.

Nou kan jy probeer:

myMother.changeName("Doe");

JavaScript weet van watter persoon jy praat deur dit met myMother te "vervang" .


Ingeboude JavaScript-konstrukteurs

JavaScript het ingeboude konstruktors vir inheemse voorwerpe:

new String()    // A new String object
new Number()    // A new Number object
new Boolean()   // A new Boolean object
new Object()    // A new Object object
new Array()     // A new Array object
new RegExp()    // A new RegExp object
new Function()  // A new Function object
new Date()      // A new Date object

Die Math()voorwerp is nie in die lys nie. Mathis 'n globale voorwerp. Die newsleutelwoord kan nie gebruik word op Math.


Het jy geweet?

Soos u hierbo kan sien, het JavaScript objekweergawes van die primitiewe datatipes String, Numberen Boolean. Maar daar is geen rede om komplekse voorwerpe te skep nie. Primitiewe waardes is baie vinniger:

Gebruik string letterlikes ""in plaas van new String().

Gebruik getalleletters 50in plaas van new Number().

Gebruik Boolese letters true / falsein plaas van new Boolean().

Gebruik letterlike voorwerpe {}in plaas van new Object().

Gebruik skikking letterlike []in plaas van new Array().

Gebruik letterlike patroon /()/in plaas van new RegExp().

Gebruik funksie-uitdrukkings () {}in plaas van new Function().

Voorbeeld

let x1 = "";             // new primitive string
let x2 = 0;              // new primitive number
let x3 = false;          // new primitive boolean

const x4 = {};           // new Object object
const x5 = [];           // new Array object
const x6 = /()/          // new RegExp object
const x7 = function(){}; // new function

Stringvoorwerpe

Normaalweg word snare as primitiewe geskep:firstName = "John"

Maar stringe kan ook as voorwerpe geskep word deur die newsleutelwoord:
firstName = new String("John")

Leer hoekom stringe nie as voorwerp geskep moet word nie in die hoofstuk JS Strings .


Getal voorwerpe

Gewoonlik word getalle as primitiewe geskep:x = 30

Maar getalle kan ook as voorwerpe geskep word deur die newsleutelwoord:
x = new Number(30)

Leer hoekom getalle nie as voorwerp geskep moet word nie in die hoofstuk JS Nommers .


Boole-voorwerpe

Normaalweg word booleans as primitiewe geskep:x = false

Maar booleans kan ook as voorwerpe geskep word deur die newsleutelwoord:
x = new Boolean(false)

Leer hoekom booleans nie as objek geskep moet word nie in die hoofstuk JS Booleans .