Подтвердить что ты не робот

Ключевое слово класса в Javascript

Согласно этой статье, это должен быть способ Javascript 2.0 для определения класса. Однако я никогда не видел этого на практике. Таким образом, вопрос. Как использовать ключевое слово класса и в чем разница между действиями Javascript 1.x?

4b9b3361

Ответ 1

Причина, по которой вы никогда не видели ключевое слово class, используемое на практике, состоит в том, что все текущие версии JavaScript: 1.x.

JavaScript 2.0 был объединен с ECMAScript 4, который был довольно непопулярным и поэтому никогда не попадал в реальный мир.

Итак, чтобы ответить на ваш вопрос, как вы используете ключевое слово class? Вы не можете.

Ответ 2

Я знаю, что это старый пост, но на сегодняшний день с появлением ECMAScript 6 мы можем объявить классы javascript.

Синтаксис выглядит следующим образом:

class Person{
  constructor(name){
    this.name = name;
  }
  printName(){
    console.log('Name is '+this.name);
  }
}
var john = new Person('John Doe');
john.printName(); // This prints 'Name is John Doe'

Полное руководство по этому вопросу можно найти в этом сообщении

Ответ 3

Вы никогда не видели его на практике, потому что практически ничего не поддерживает JavaScript 2.0. Этот проект составлен из спецификации, которая умерла, прежде чем была чем-то иным, чем черновик.

Ответ 4

Резюме

В ES6 было введено ключевое слово class. Ключевое слово class является не более чем синтаксическим сахаром поверх уже существующего шаблона наследования прототипа. Классы в javascript - это в основном еще один способ написания функций-конструкторов, которые можно использовать для создания нового объекта с помощью ключевого слова new.

Пример

class Person {

  constructor(name) {
    this.name = name;
  }
  talk() { console.log('hi'); }
}

const me = new Person('Willem');

console.log(typeof Person) 
// logs function, Person class is just another constructor function under the hood

console.log(me.__proto__ === Person.prototype) 
// logs true, classes just use the same prototypal inheritance pattern which is used by constructor functions. 
// An object created with the new keyword gets a __proto__ property on it which is a reference to the prototype property on a constructor function.

Ответ 5

Вы все равно можете создавать классы в JS, используя прототип!

var foo = function() {
  this.hurrah = "yay!";
  return this;
}

foo.prototype.doit() {
  alert(this.hurrah);
}

Ответ 6

Если у вас есть Java или С# background, здесь, как определить класс в JavaScript

var MyClass = function (f, l){//constructor 
    //private members
    var firstName = f,
        lastName = l,
        fullName = function () { //fullName is a private function
            return firstName + " " + lastName;
        };
    return {
        //public members
        getFullName: fullName 
    };
}

var output = document.getElementById('Output'); //<div id="Output"></div>
var myName = new MyClass("First", "Last");
output.innerHTML = myName.getFullName();

Ответ 7

Просто добавьте способ создания классов в ECMA5.

Обратите внимание, что у него нет функции конструктора таким образом (но вы можете вызвать функцию инициализации, если хотите)

var Class = {
      el: null,
      socket: null,

      init: function (params) {

        if (!(this.el instanceof HTMLElement)) {
          throw new Error('Chat room has no DOM element to attach on.');
        }

        return this.doStuff();

      },
      doStuff: function (params) {
        return this;
      }
};

var instanceofClass = Object.create(Class, {
  el: {
    value: document.body.querySelector('.what ever')
  },
  someMoreData: {
    value: [0,5,7,3]
  }
}).init();