Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как описывать свойства ООП? (https://javascript.ru/forum/offtopic/36647-kak-opisyvat-svojjstva-oop.html)

megaupload 24.03.2013 17:27

class Animal {
    animal = 'animal';

    say() {
        alert('i animal')
    }
}


class Cat extends Animal {
    cat = 'cat';

    say() {
        super.say();
        alert('and i cat')
    }
}

new Cat().say();



а получается так

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};
var Animal = (function () {
    function Animal() {
        this.animal = 'animal';
    }
    Animal.prototype.say = function () {
        alert('i animal');
    };
    return Animal;
})();
var Cat = (function (_super) {
    __extends(Cat, _super);
    function Cat() {
        _super.apply(this, arguments);

        this.cat = 'cat';
    }
    Cat.prototype.say = function () {
        _super.prototype.say.call(this);
        alert('and i cat');
    };
    return Cat;
})(Animal);
new Cat().say();
//@ sourceMappingURL=td.js.map

kobezzza 24.03.2013 17:42

Цитата:

Сообщение от megaupload (Сообщение 242354)
твой брат родил или сестра)?

У брата сынишка родился:)

megaupload 24.03.2013 17:44

охуенно, а сколько вам лет )?

kobezzza 24.03.2013 17:45

Цитата:

Сообщение от megaupload (Сообщение 242355)
class Animal {
    animal = 'animal';

    say() {
        alert('i animal')
    }
}


class Cat extends Animal {
    cat = 'cat';

    say() {
        super.say();
        alert('and i cat')
    }
}

new Cat().say();



а получается так

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};
var Animal = (function () {
    function Animal() {
        this.animal = 'animal';
    }
    Animal.prototype.say = function () {
        alert('i animal');
    };
    return Animal;
})();
var Cat = (function (_super) {
    __extends(Cat, _super);
    function Cat() {
        _super.apply(this, arguments);

        this.cat = 'cat';
    }
    Cat.prototype.say = function () {
        _super.prototype.say.call(this);
        alert('and i cat');
    };
    return Cat;
})(Animal);
new Cat().say();
//@ sourceMappingURL=td.js.map

TypeScript прикольная штука:)

kobezzza 24.03.2013 17:45

Цитата:

Сообщение от megaupload (Сообщение 242359)
охуенно, а сколько вам лет )?

Мне 23, а брату 25)

megaupload 24.03.2013 18:05

Цитата:

Сообщение от kobezzza
TypeScript прикольная штука

а что лучше ECMA 6 транслируемый в ECMA3 или Typescript транслируемый в ECMA3)?

kobezzza 24.03.2013 18:11

Цитата:

Сообщение от megaupload (Сообщение 242366)
а что лучше ECMA 6 транслируемый в ECMA3 или Typescript транслируемый в ECMA3)?

Лучше ECMA6 работающий нативно во всех современных браузерах) Ну а так мне наверно трудно сказать, т.к. я этих зверей ещё на реальных проектах не пробовал, хотя TypeScript похож C# и ActionScript3 и лично для меня это плюс, т.к. я работал с этими двумя языками и мне в общем они оч нравились.

Кстати поиграйся с Coffee, он ппц сахарный, куда более сахарнее, чем TypeScript. Рекомендую прочитать Марк Бейтс Coffee Script.

megaupload 24.03.2013 18:18

меня бесит синтаксис кофя... он пиздец какой неочевидный это факт.


ну как я понял typescript его суть именно в проверке типов перед компиляцией и все, а строгая типизация позволяет движкам компилить более быстрый байткод... а в ECMA6 такое есть?

functionm  test (lol:string,  qq:Cat){

}

kobezzza 24.03.2013 18:20

Цитата:

Сообщение от megaupload (Сообщение 242370)
меня бесит синтаксис кофя... он пиздец какой неочевидный это факт.

Это как посмотреть. Я вот начал присматриваться у Питону и Кофе сразу стал становится приятным:) По началу меня он тоже бесил.

Цитата:

а в ECMA6 такое есть?
В экме такое давно есть, тот же ActionScript3 тоже реализует синтаксис ECMA и там есть и возможность указывания типов (не обязательное) и классы и неймспейсы (пакеты, как в Java). Хотя наверно ECMAScript дробится на разные ветки, т.к. реализация JS идёт немного по другому.

В новом стандарте JS вроде как должны появится способы проверки входных параметров функций, но не более того.

danik.js 24.03.2013 18:24

var Animal = function () {
    this.animal = 'animal';
};
Animal.prototype.say = function () {
    alert('i animal');
};

var Cat = function () {
        Animal.apply(this, arguments);

        this.cat = 'cat';
}
Cat.prototype = Object.create(Animal.prototype, {
    constructor: {value: Cat, writable: true, enumerable: false, configurable: true}
});
Cat.prototype.say = function () {
    Animal.prototype.say.call(this);
    alert('and i cat');
};

new Cat().say();


То есть на сегодняшний день этот код должен примерно так выглядеть?


Часовой пояс GMT +3, время: 18:34.