Показать сообщение отдельно
  #9 (permalink)  
Старый 13.04.2020, 13:56
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

micscr,
Сообщение от micscr
же ж и методы можно задать, выглядит поэтому как
В PHP анонимные функции тоже можно задать значениями элементов массива, и тоже будет выглядеть как... Просто там массивы не объекты, как в JS, поэтому и контекст разный.
var data = ['Ku!', function() { return this[0]; }];
alert(data[1]());

PHP. Error: Using $this when not in object context.
$data = ['Ku!', function() { return $this[0]; }];
echo $data[1]();

Сообщение от micscr
короткий аналог определения класса,
Определение класса это общие методы для экземпляров, а не дублирование этих методов в каждый экземпляр. Противоположное актуально только, когда нужен объект в единственном экземпляре (singleton), пример ниже.

Сообщение от micscr
а не простой структуры с данными как ассоц. массив.
У вас простая структура с данными, она даже подписана как data, зачем фантазировать про методы. В JS такие простейшие объекты соответствуют ассоциативным массивам.

Белый шум,
Так еще можно:
var data = new function() {
    this.products = [];
    this.cart = {};
    this.limitMessage = 4;
    this.CONST_STATE_PRODUCTLIST = 'productList';
    this.CONST_STATE_CHECKOUT = 'checkout';
    this.state = this.CONST_STATE_PRODUCTLIST;
}();

Или так:
var data = new class {
    constructor() {
        this.products = [];
        this.cart = {};
        this.limitMessage = 4;
        this.CONST_STATE_PRODUCTLIST = 'productList';
        this.CONST_STATE_CHECKOUT = 'checkout';
        this.state = this.CONST_STATE_PRODUCTLIST;
    }
};

Последний раз редактировалось Rise, 13.04.2020 в 14:17.
Ответить с цитированием