Статические и Instance методы в JavaScript

https://abdulapopoola.com/2013/03/30/static-and-instance-methods-in-javascript/

В читальном коде вю образца, часто мы видим функцию Vue.xx или $ vm.yy функция не ясно, в чем разница между этими двумя.

Google позже обнаружил на самом деле есть существенные различия.

Мы знаем, что модель наследования яваскрипт и Java, PHP и другие программирования объектно-ориентированные языки имеют очень большое значение

JS является типичным слабо типизированным языком, а не класс класса реального класса, класс находится в самом факте является объект построения функции. Давайте создадим новый объект, используя новый вызов конструктора, который фактически имитирует чувство ООП но помните: модель JS наследование и традиционные Javas, PHP отличается!

Во-первых, есть статическое свойство свойство / экземпляр этой вероятности. Все свойства объекта (this.xx) являются общественность, thisobj.xx можно получить непосредственно через. Конечно, мы можем конструктор функции (то есть класс класс определение) добавляется так, что соответствующее ключевое слово вар собственности в частные, для этого типа частной собственности, мы должны иметь возможность доступа путем определения аксессоров и сеттеры.

// Конструктор 
вар Person = функция (имя, возраст) {
     // частные свойства 
    вар собств = {}; 
    
    // Общественные свойства 
    этого .name = имя;
    это .age = возраст; 
    
    // Общественные методы 
    этой .sayHi = функция () { 
        Alert ( 'привет' ); 
    } 
} 

// статический метод; этот метод только 
// существует в классе и не существует 
// на дочерние объекты 
Person.sayName = функция () {
    предупреждение ( "Я объект Person;)" );  
}; 

// Метод экземпляра; 
// Все объекты Person будет иметь этот метод 
Person.prototype.setName = функция () {nameIn
     это .name = nameIn;  
} 

// Тесты 
вар за = новый Person ( 'John Doe', 22 ); 

// Показывает предупреждения 
Person.sayName (); 

// TypeError: Object [объект Object] не имеет какого - либо метода '' sayName 
per.sayName () 

// Показать Уведомления 
per.sayHi (); 

// John Doe 
per.name; 

// 22
per.age; 

per.setName ( 'Jane Doe' ); 

// Jane Doe 
per.name;

Обратите внимание , что определение статических свойств или методов в свойстве класса (конструктор) не доступно в контексте экземпляра экземпляра. Но язык Java в этот момент несколько иная, доступна в экземпляре контекста в Java статические методы или свойства. Это выглядит очень странно, потому что экземпляр объекта и никаких объектов, переменные

Здесь я цитирую инструкцию Java:

"

Вы также можете получить доступ к статической эталонной модели объекта метода, такие как:

myBike.numberOfBicycles

"

Наконец, мы рассмотрим Vuejs плагин в нескольких использованиях, мы можем контролировать выше так называемые статические и методы экземпляра зрения:

MyPlugin.install = функция (Вью, опции) {
   // 1. добавить глобальный метод или свойство 
  Vue.myGlobalMethod = функция () {
     // некоторая логика ... 
  } 

  // 2. добавить глобальный актив 
  Vue.directive ( 'мой -directive» , { 
    связывания (Е.Л., связывание, vnode, oldVnode) { 
      // некоторая логика ... 
    } 
    ... 
  }) 

  // 3. инъекционные некоторые параметры компонента 
  Vue.mixin ({ 
    создано: функция () {
       // какая - то логика ... 
    } 
    ... 
  }) 

  //4. добавить метод экземпляра 
  Vue.prototype. $ MyMethod = функция (methodOptions) {
     // некоторая логика ... 
  } 
}

 

рекомендация

отwww.cnblogs.com/kidsitcn/p/10980460.html