LINUX.ORG.RU

Короче, запихиваешь в класс состояние и методы и не паришься на чем оно там основано. Главное что class-сахарок появился, а не как раньше

ClassName.prototype.function_name = function() {}

makoven ★★★★★
()

насколько отличаются эти парадигмы

Разница в том, что в жабке ты описываешь объект декларативно, в виде класса, а в жабаскрипте - императивно, в виде алгоритма.

no-such-file ★★★★★
()

Основное отличие в том, что в JS классы являются первоклассными объектами языка(хотя, с оговорками)

onceagain2017
()
Ответ на: комментарий от Silerus

Вообще, это означает изменение класса или модуля под нужды другого модуля(о чем третий модуль не подозревает, и думает, что в первом все по старому).

Но, в данном случае, у человека манкипатч головного мозга

onceagain2017
()

Если ООП, то отличия только в синтаксисе. Ну и отсутствии защиты в JS. Прототипы позволяют больше накуролесить, но этим только упорыши пользуются.

Vit ★★★★★
()

Прототипы это более мощная концепция. Но на практике этим никто не пользуется.

Legioner ★★★★★
()

И то и другое ООП. Одно классово-ориентированное. Другое прототипно-ориентированное. У тебя каша в голове.

anonymous
()
Ответ на: комментарий от no-such-file

жабке ты описываешь объект декларативно, в виде класса, а в жабаскрипте - императивно

Java

public class Bicycle {

    public int cadence;
    public int gear;
    public int speed;
  
    public Bicycle(int startCadence, int startSpeed, int startGear) {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    public void setCadence(int newValue) {
        cadence = newValue;
    }
        
    public void setGear(int newValue) {
        gear = newValue;
    }
        
    public void applyBrake(int decrement) {
        speed -= decrement;
    }
        
    public void speedUp(int increment) {
        speed += increment;
    }
        
}

new Bicycle(10,20,30)

JavaScript

Bicycle = {

    cadence = 0,
    gear = 0,
    speed = 0,
  
    constructor (startCadence, tartSpeed, startGear) {
        this.gear = startGear
        this.cadence = startCadence
        this.speed = startSpeed
    },
        
    setCadence(newValue) {
        this.cadence = newValue
    },
        
    setGear(newValue) {
        this.gear = newValue
    },
        
    applyBrake(decrement) {
        this.speed -= decrement
    },
        
    speedUp(increment) {
        this.speed += increment
    }
        
}

Bicycle.constructor.call(Object.create(Bicycle), 10, 20, 30)

JavaScript ES6

class Bicycle {

    constructor (startCadence = 0, tartSpeed = 0, startGear = 0) {
        this.gear = startGear
        this.cadence = startCadence
        this.speed = startSpeed
    }
        
    setCadence(newValue) {
        this.cadence = newValue
    }
        
    setGear(newValue) {
        this.gear = newValue
    }
        
    applyBrake(decrement) {
        this.speed -= decrement
    }
        
    speedUp(increment) {
        this.speed += increment
    }
        
}

new Bicycle(10, 20, 30)

anonymous
()

Что характерно, на исходный вопрос «В чем разница ООП от прототипно ориентированного» никто так и не ответил.

anonymous
()
Ответ на: комментарий от anonymous

В чем разница между Кофе и Молотым? Музыкантом и Скрипачом? Автомобилем и Мерседесом?

Ты действительно не понял в чем вопрос ТС?

anonymous
()
Ответ на: комментарий от anonymous

В чем разница между классовым и прототипным подходами ему пояснили.

Если ты про это:

Разница в том, что в жабке ты описываешь объект декларативно, в виде класса, а в жабаскрипте - императивно, в виде алгоритма.

То такое объяснение понятно только тем, кто и так уже в курсе.

Если про пример с кодом описания класса, то там я увидел разницу только в создании объекта, да и то несущественную

new Bicycle(10,20,30)

Bicycle.constructor.call(Object.create(Bicycle), 10, 20, 30)

Причем эту разницу в ES6 убрали. Однако, говорят, что это чисто косметическое изменение (сахарок) и разница между привычным ООП и прототипным никуда не делась.

Я так и не увидел ответа, в чем разница...

anonymous
()

насколько отличаются эти парадигмы

Парадигма одна, отличаются детали использования. Прототипный подход лучше подходит для кода, оперирующего отдельными объектами, а не классами. Если все закручено в конструкторы, то получается та же жабка

annulen ★★★★★
()

А разница не в ногах - разница между ними

anonymous
()
Ответ на: комментарий от anonymous

JavaScript

Не рабочий код, ошибка Uncaught SyntaxError: Invalid shorthand property initializer

gobot ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.