Введение в статический метод JavaScript

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

Чтобы объявить статический метод, мы можем просто использовать статическое ключевое слово с сигнатурой метода. Статический метод не вызывается в экземпляре класса, он сделан для непосредственного вызова класса.

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

Синтаксис:

static methodName()()

В JavaScript мы также используем ключевое слово static, чтобы определить любой метод как статический метод. Нам просто нужно использовать ключевое слово static вместе с именем метода. Имена методов могут быть любыми. Есть много моментов, связанных с этим статическим ключевым словом, давайте проверим их один за другим:

  • Класс может содержать любое количество статических методов. Другими словами, класс может иметь более одного статического метода.
  • Статический метод может иметь любое имя, как любой другой метод или функция.
  • Чтобы вызвать статический метод из другого статического метода, мы можем использовать это ключевое слово.
  • Статический метод может быть использован для создания служебных функций.
  • Если мы хотим вызвать статический метод из нестатического метода в таких случаях, мы не можем использовать это ключевое слово. Нам нужно вызывать статический метод по имени класса или как свойство конструктора.
  • Мы можем объявить более одного статического метода с одним и тем же именем, но если мы это сделаем, JavaScript всегда вызывает последний.

Простой пример, демонстрирующий синтаксис статического метода.

Код:


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

В приведенном выше примере мы вызываем статический метод с именем класса, не создавая экземпляр класса. Использование имени класса только в качестве примера.

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

  • Статический метод - это методы, которые требуют, чтобы объект класса создавался до того момента, когда они действительно были вызваны. Чтобы вызвать их, нам нужно создать объект класса, в котором он определен. Статический метод получает вызов двумя способами: один использует это ключевое слово, другой - из конструктора.
  • Статические методы не могут напрямую вызывать нестатический метод. Статические методы используют переменную состояния экземпляра, чтобы влиять на их поведение. Статический метод также не может видеть состояние переменной экземпляра, поэтому, если мы попытаемся вызвать нестатический метод из компилятора статического метода, возникнет жалоба.
  • Кроме того, статический метод не может использовать нестатическую переменную экземпляра. Статический метод не может ссылаться ни на какие переменные экземпляра класса. Статический метод не знает, какое значение переменной экземпляра использовать.
  • Принимая во внимание, что в случае нестатических методов у них есть какое-либо статическое ключевое слово вместе с именем метода, и если мы хотим работать с нестатическими методами, нам нужно создать объект этого класса, потому что он принадлежит классу, только в котором это объявлено. Нестатические методы могут легко получить доступ к любой статической и любой статической переменной без экземпляра класса.

Чтобы вызвать статический метод из другого статического метода, мы можем использовать ключевое слово this.

Код:

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, и их можно использовать с ключевым словом static. Ниже приведен пример, чтобы показать, как использовать это с ключевым словом static.

Код:

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 = selected ();

Рекомендуемые статьи

Это руководство по JavaScript статическому методу. Здесь мы обсуждаем синтаксис, работу и примеры статического метода javascript. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. События JavaScript
  2. Ошибки в JavaScript
  3. JavaScript против Ruby
  4. Рекурсивная функция в JavaScript