Стремлюсь узнать как этот же код на c# написать на js. Я закомментил все что должно быть переведено в код на js.
Надеюсь сообществу и мне будет полезно знать как правильно реализовать полноценный класс.
public class Men // класс
{
public string Name { get; set; } // публичное свойство
private int Age; // приватное поле
public Men(string Name) // конструктор
{
this.Name = Name; // заполнение поля объекта
}
public void SayHi() // публичный метод
{
Console.WriteLine("Hi"); // это можно не писать
Men men = new Men("Alex"); // создание экземпляра класса самого себя
}
}
Приватных полей нет, всё публичное. В остальном (при использовании ES5) так:
var Man = (function () {
function Man(name) {
console.log("Creating " + name);
this.name = name;
}
Man.prototype.sayHi = function () {
console.log("Hi from " + this.name);
var man = new Man("Alex");
};
return Man;
})();
var x = new Man("Abc");
x.sayHi();
Пример на старых prototype:
var Men = function(name, age) {
this.name = name;
if(age!=null && !(age==='undefined'))
this.age = age;
};
Men.prototype.name = null;
Men.prototype.SayHi = function(){
console.log("Hi " + this.name + " [you age "+this.age+"]");
};
Создание и вызов:
let instance1 = new Men("Вася",24);
instance1.SayHi();
let instance2 = new Men("Петя");
instance2.SayHi();
Например так:
var men = (name) => {
if(!name) {
return null;
}
var privateName = 'Alex';
class Men {
constructor(name) {
this.name = name;
}
getPrivateName() {
return privateName;
}
getPublicName() {
return this.name;
}
}
return new Men(name);
}, run = men('Lex');
Так:
function Men(name) {
if (!name) {
return null;
}
var privateName = 'Alex';
this.name = name;
this.getPrivateName = function () {
return privateName;
};
this.getPublicName = function () {
return this.name;
};
return this;
}
run = new Men('Lex');
Или так:
var Men = function (name) {
if (!name) {
return null;
}
var privateName = 'Alex';
this.name = name;
this.getPrivateName = function () {
return privateName;
};
this.getPublicName = function () {
return this.name;
};
return this;
}, run = Men('Lex');
Дадут одинаковый результат:
console.log(run.getPrivateName(), run.getPublicName(), run.name, run.privateName);
// Alex Lex Lex undefined
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Стоит задача: когда пользователь заходит на страницу, то выпадает меню сверху с запросом на соглашение хранения cookieКак это сделать?
Вообщем, написал бота, но он при нажатии кнопки выдает ошибку: