Перевести пример кода c# на js

194
30 июня 2018, 19:40

Стремлюсь узнать как этот же код на 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"); // создание экземпляра класса самого себя
    }
}
Answer 1

Приватных полей нет, всё публичное. В остальном (при использовании 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();

Answer 2

Пример на старых 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();
Answer 3

Например так:

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
READ ALSO
Как сохранить cookie при нажатие кнопки “Согласен”?

Как сохранить cookie при нажатие кнопки “Согласен”?

Стоит задача: когда пользователь заходит на страницу, то выпадает меню сверху с запросом на соглашение хранения cookieКак это сделать?

187
Three.js метаморфозы

Three.js метаморфозы

Наткнулся на такую штуку https://youtube/azWR6mpBs64

136
Ошибка - TypeError: data.filter is not a function, телеграм бот

Ошибка - TypeError: data.filter is not a function, телеграм бот

Вообщем, написал бота, но он при нажатии кнопки выдает ошибку:

239
Почему POST запрос выдает 400 ошибку?

Почему POST запрос выдает 400 ошибку?

Уважаемые коллеги, в чем может быть проблема?

169