Как Вы определяете класс ООП в JavaScript?

На основе моего наблюдения книга, которую я читаю о JavaScript, указывает, что существует ООП с JavaScript? Это не говорит очень об этом, я подразумеваю, что не было объяснено, как определить класс. Кто-то может дать мне демонстрационный отрывок?

Спасибо

6
задан Daniel Vassallo 8 February 2010 в 20:14
поделиться

7 ответов

Следующий фрагмент может помочь вам начать работу с бесклассовыми объектами JavaScript, основанными на экземплярах:

function getArea() {  
   return (this.radius * this.radius * 3.14);  
}  

function getCircumference() {  
   var diameter = this.radius * 2;  
   var circumference = diameter * 3.14;  
   return circumference;  
}

function Circle(radius) {  
   this.radius = radius;  
   this.getArea = getArea;  
   this.getCircumference = getCircumference;  
}

var bigCircle = new Circle(100);  
var smallCircle = new Circle(2);

alert(bigCircle.getArea());            // displays 31400  
alert(bigCircle.getCircumference());   // displays 618  
alert(smallCircle.getArea());          // displays 12.56  
alert(smallCircle.getCircumference()); // displays 12.56

Пример из: SitePoint - объект JavaScript -Ориентированное программирование

2
ответ дан 8 December 2019 в 05:54
поделиться

JavaScript основан на прототипах , а не на классах.

Программирование на основе прототипов - это стиль объектно-ориентированного программирования в , в котором классы отсутствуют, и повторное использование поведения (известное как наследование в языки на основе классов) выполняется посредством процесса клонирования существующих объектов, которые служат прототипами. Эта модель также может быть известна как бесклассовое, ориентированное на прототип или основанное на экземплярах программирование. Делегирование - это функция языка , которая поддерживает программирование на основе прототипов.

8
ответ дан 8 December 2019 в 05:54
поделиться

Я рекомендую эту книгу для краткого и точного объяснения того, как использовать прототипное наследование JS, а также как имитировать классический объектно ориентированный объект. наследование в JS.

JavaScript: The good parts

4
ответ дан 8 December 2019 в 05:54
поделиться

Для создания объекта можно использовать любую функцию в javascript:

Пример:

function MyPoint(x, y) {
    this.x = x;
    this.y = y;
    this.distanceTo = getDistance;
}

function getDistance(p) {
  var dx = this.x-p.x;
  var dy = this.y-p.y;
  return Math.sqrt(dx*dx + dy*dy);
}

var p0 = new MyPoint(1, 2);
var p1 = new MyPoint(2, 3);

window.alert('The distance is ' + p0.distanceTo(p1));
3
ответ дан 8 December 2019 в 05:54
поделиться

В JavaScript все является объектом. Так что даже функция - это объект. Поэтому в js (менее < версии 2), функция делает классы (которые сами являются объектами первого класса). Пройдите здесь, здесь и здесь для лучшего понимания

1
ответ дан 8 December 2019 в 05:54
поделиться

Вот несколько способов

if (typeof FFX == "undefined") {
    FFX = {};
}

//Static class
FFX.Util = ({
     return {
      method:function(){
      }
})();

FFX.Util.method(); 



//Instance class
FFX.Util2 = ({
    // private method
    var methodA=function(){
      alert("Hello");
    };
     return {
      method:function(){
      //Call private method
        methodA();
      }
});
var x= new FFX.Util();
x.method(); 

Другой способ

function MyClass(){
}

/* privileged functions */
MyClass.prototype.hello = function(){
    alert("Hello");
}   

Также вы могли увидеть, как jquery, prototype и тому подобное обрабатывают классы, и посмотреть, подходит ли это вам .

2
ответ дан 8 December 2019 в 05:54
поделиться

Не существует единого стандартного способа ООП в JavaScript. Все используют немного разные системы классов / экземпляров, и в большинстве книг проблема решается. См. этот вопрос для обсуждения способов работы с объектно-ориентированными объектами в JS и выберите свой любимый.

2
ответ дан 8 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: