2014-08-30 3 views
0

Как я могу поставить setPosition внутри класса DrawClockHand? Есть DrawCLockHand даже класс технически в Javascript.Как добавить метод в класс javascript?

Код:

var DrawClockHand = function(cv) { 
    this._cv = cv; 
    this._ctx = cv.getContext('2d'); 
    this.TIME = 1000; 
    this._r = 50; 
} 

DrawClockHand.prototype.setPosition = function(x,y) { 
    x = x || 0; 
    y = y || 0; 
    this._x = x; 
    this._y = y; 
} 
+0

ли вы имеете в виду как функцию на экземпляре объекта, созданного с помощью функции конструктора 'DrawClockHand' в отличие от прототипа, как у вас выше? –

+2

* DrawClockHand * - это функция. Если вызывается с * new *, если ведет себя как конструктор. В ECMAScript нет классов, но [* ES6 *] (https://people.mozilla.org/~jorendorff/es6-draft.html#sec-class-definitions) хотел бы изменить это). – RobG

+0

Да, на ответ один. Если я хочу сделать это в классе, как бы я это сделал. ECMAScript - это другая форма Javascript. –

ответ

5

DrawClockHand не класс, это просто функция, которая создает объект с заданной структурой (при вызове с новым оператором).

При вызове функции DrawClockHand так:

var o = new DrawClockHand(someVal); 

Тогда вы будете создавать новый объект со структурой, установленной функцией DrawClockHand. В этом случае объект o также будет иметь метод setPosition, потому что он был установлен как свойство propotype для DrawClockHand.

Так это справедливо

var o = new DrawClockHand(someVal); 
o.setPosition(1,2); 
+0

- это хороший способ сделать это. Или я должен создать настоящий класс с реальными конструкторами в Javascript. Я несколько новичок в аспекте Javascript. –

+0

Прежде всего, когда вы кодируете javascript, перестаете думать в классах. Класс определяет статическую структуру данных (включая методы), а javascript был разработан как очень динамичный язык. Тем не менее, есть много случаев, когда вы можете определить конкретный strcuture для множества разных объектов, в этом случае вы должны использовать шаблон создания. Один шаблон создания является открытым в моем ответе, где у вас есть функция, которая определяет strcture и создает объект с данной структурой. –

+0

я настоятельно рекомендую вам это показания: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript http://dmitrysoshnikov.com/tag/ecma-262-3/ http://leoasis.github.io/posts/2013/01/24/javascript-object-creation-patterns/ –

Смежные вопросы