Въведение в статичния метод на JavaScript

Статичните методи на JavaScript обикновено се използват за създаване на полезни функции. Те се въвеждат в ES6 за специфичния за класа метод за обектно-ориентирано програмиране в JavaScript.

За деклариране на статичен метод можем просто да използваме статична ключова дума с подписа на метода. Статичният метод не се извиква в инстанцията на клас, те са направени да се извикват директно в класа.

Така че можем да кажем, че JavaScript ни предоставя статичен метод, който принадлежи към класа, но не и към инстанцията на класа. Подобно на java, ние не изискваме екземпляр от класа, за да извикаме и статичния метод в JavaScript. Следователно статичният метод в JavaScript принадлежи към самия клас.

Синтаксис:

static methodName()()

В JavaScript също използваме статичната ключова дума, за да определим всеки метод като статичен метод. Просто трябва да използваме статичната ключова дума заедно с името на метода. Имената на методите могат да бъдат всякакви. Има много точки, свързани с тази статична ключова дума, нека ги проверим една по една:

  • Класът може да съдържа произволен брой статични методи. С други думи, клас може да има повече от един статичен метод.
  • Статичният метод може да бъде от всяко име, като всеки друг метод или функция.
  • За да извикаме статичен метод от друг статичен метод, можем да използваме тази ключова дума.
  • Статичният метод може да се използва за създаване на полезни функции.
  • Ако искаме да извикаме статичен метод от нестатичния метод в такива случаи, не можем да използваме тази ключова дума. Трябва да извикаме статичния метод по име на клас или като свойство на конструктора.
  • Можем да декларираме повече от един статичен метод със същото име, но ако го направим, JavaScript винаги извиква последния.

Прост пример за демонстриране на синтаксиса на статичния метод.

Код:


class Syntax
(
static displayMessage()
(
return "static method called"
)
)
document.writeln(Syntax.displayMessage());

В горния пример извикваме статичния метод с името на клас, който не създава инстанцията на класа. Използване само на име на клас като екземпляр.

Как работят статичните методи в JavaScript?

  • Статичният метод са методи, които изискват обект от клас да бъде създаден преди, когато всъщност са се обадили. За да ги извикаме, трябва да създадем обекта на класа, в който е определен. Статичният метод получава обаждане по два начина, като човек използва тази ключова дума друг от конструктора.
  • Статичните методи не могат директно да извикат нестатичния метод. Статичните методи използват променливо състояние на инстанция, за да повлияят на тяхното поведение. Статичният метод също не може да види състоянието на променлива инстанция, така че ако се опитаме да извикаме нестатичния метод от компилатора на статичен метод, ще се оплаче.
  • Също така, статичният метод не може да използва нестатичната променлива на инстанцията. Статичният метод не може да се отнася до никоя променлива на инстанция от класа. Статичният метод не знае кой променлива стойност на инстанцията да се използва.
  • Като има предвид, че в случай на нестатични методи те имат всякаква статична ключова дума заедно с името на метода и ако искаме да работим с нестатични методи, тогава трябва да създадем обекта от този клас, защото той принадлежи към класа само в който тя е декларирана. Нестатичните методи могат лесно да получат достъп до всяка статична и всяка статична променлива без инстанцията на клас.

За да извикаме статичен метод от друг статичен метод, можем да използваме ключовата дума „това“.

Код:

class StaticMethodCallDemo (
static staticMethodOne() (
return 'Static method one is called from ';
)
static sttaicMethodTwo() (
return this.staticMethod() + ' static method two';
)
)
StaticMethodCallDemo.staticMethodOne();
StaticMethodCallDemo.sttaicMethodTwo();

Но какво ще стане, ако искаме да наречем статичен метод от нестатичния метод. За това можем да продължим с един от двата подхода

1) classname.static_method_name (); : Използвайки името на класа
2) this.constructor.static_method_name (); : Или чрез използване на свойството конструктор.

Код:

class StaticMethodCallDemo2 (
constructor() (
console.log(StaticMethodCallDemo2.staticMethodOne());
// 'static method called using class name.'
console.log(this.constructor.staticMethodOne());
// 'static methed called using constructor property.'
)
static staticMethodOne() (
return 'static method has been called.';
)
)

JavaScript също има въвеждането на класове в ES6, така че сега можем да използваме статичния метод, конструктори, супер обаждания към родител и наследяване, което ще направи оперативната съвместимост много по-лесна за разработчика. Така че можем да имаме подклас към родителски клас и всеки метод, който декларираме в родителския клас, който ще бъде наличен и в подкласа. В ES5 се въвеждат и аксесоари за геттер и сетер, които могат да се използват със статичната ключова дума. По-долу е примерът, който показва как да използвате това със статичната ключова дума.

Код:

class Demo(
constructor(name)(
this.name = name
)
static get Leader()(
return new Demo(abc)
)
)

Примери за статичен метод на JavaScript

Ето някои от примерите на статичния метод на JavaScript, дадени по-долу:

Пример №1

За да покажете статичния метод със същото име.

Код:



class SameNameDemo
(
static displayMsg()
(
return "static method with same name one"
)
static displayMsg()
(
return "static method with same name two"
)
)
document.writeln(SameNameDemo.displayMsg());

изход:

Пример №2

Пример за извикване на повече от един статичен метод.

Код:



class NoSameName
(
static displayMsg1()
(
return "static method one is called"
)
static displayMsg2()
(
return "static method two is called"
)
)
document.writeln(NoSameName.displayMsg1()+"
");
document.writeln(NoSameName.displayMsg2());

изход:

Пример №3

За показване на съобщение.

Код:



class Demo
(
static displayMsg()
(
return "static method is called"
)
)
document.writeln(Demo.displayMsg());

изход:

Пример №4

Извикване на статичен метод от нестатичен метод.

Код:



class Demo (
static displayMsg() (
return "calling static method from non static method"
)
showMsg() (
document.writeln(Demo.displayMsg()+"
");
)
)
var demo =new Demo();
demo.showMsg();

изход:

Пример №5

Извикване на статичен метод от конструктора.

Код:



class Demo (
constructor() (
document.writeln (Demo.displayMag()+"
");
document.writeln (this.constructor.displayMag());
)
static displayMag() (
return "calling static method from constructor."
)
)
var demo = new Demo();

Резултат:

заключение

Така че в общи линии статичният метод не изисква инстанцията за достъп до тях, ние можем директно да ги осъществим чрез името на класа, в който принадлежат. Например ClassName.Static-method-name-to-be = call ();

Препоръчителни статии

Това е ръководство за статичния метод на JavaScript. Тук обсъждаме синтаксиса, работата и примерите на статичния метод на JavaScript. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. JavaScript събития
  2. Грешки в JavaScript
  3. JavaScript срещу Ruby
  4. Рекурсивна функция в JavaScript