Согласно этой статье, это должен быть способ Javascript 2.0 для определения класса. Однако я никогда не видел этого на практике. Таким образом, вопрос. Как использовать ключевое слово класса и в чем разница между действиями Javascript 1.x?
Ключевое слово класса в Javascript
Ответ 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();