Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.10.2013, 16:28
Аспирант
Отправить личное сообщение для Chiz Посмотреть профиль Найти все сообщения от Chiz
 
Регистрация: 18.04.2012
Сообщений: 43

Создание прототипа функции
В общем я пытаюсь написать функцию имеющюю свои свойства и методы.Вот упрощенный код, который я написал.
var a = function(){
 /* ... код функции ... */
 this.smth();
}

a.prototype = {
 get:function(name){
 return name.toLowerCase();
},
smth:function(){
 /* ... код функции ... */
}
};

var b  = a.get("name");

var func = new a();

Когда вызываю функцию все в порядке, а когда вызываю один из ее методов выдает ошибку. Пожалуйста объясните как нужно работать с прототипами
Ответить с цитированием
  #2 (permalink)  
Старый 30.10.2013, 16:34
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

какую ошибку выдает? как вызываешь?
Ответить с цитированием
  #3 (permalink)  
Старый 30.10.2013, 16:41
Аспирант
Отправить личное сообщение для Chiz Посмотреть профиль Найти все сообщения от Chiz
 
Регистрация: 18.04.2012
Сообщений: 43

jsru_, вызываю так
var b  = a.get("name");
выдает TypeError: Object function (){ /* ... код функции ... */ this.smth(); } has no method 'get'
Ответить с цитированием
  #4 (permalink)  
Старый 30.10.2013, 16:54
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

попробуй
a.get("name").bind(a);
Ответить с цитированием
  #5 (permalink)  
Старый 30.10.2013, 16:59
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Chiz
var b  = a.get("name");
У объекта (функции) a нет свойства get (откуда ему взяться?).
Так зато можно:
a.prototype.get("name");
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 30.10.2013, 17:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Chiz,

var a = function(){
 /* ... код функции ... */
 this.n = 0;
 this.smth();
}

a.prototype = {
 get:function(name){
 return name.toLowerCase();
},
smth:function(){
  alert(this.n++)
 /* ... код функции ... */
}
};
var func = new a();
var b  = func.get("NAME");
alert(b);
func.smth();
func.smth();
func.smth();
var c = new a();
c.smth();
Ответить с цитированием
  #7 (permalink)  
Старый 30.10.2013, 20:10
Аспирант
Отправить личное сообщение для Chiz Посмотреть профиль Найти все сообщения от Chiz
 
Регистрация: 18.04.2012
Сообщений: 43

danik.js, а можно как-нибудь сделать, чтобы спокойно вызывать методы объекта без prototype?И писать:
a.get();

Вместо
a.prototype.get();
/* или */
var o = new a();
o.get();
Ответить с цитированием
  #8 (permalink)  
Старый 30.10.2013, 20:47
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

var a = function () {}
a.prototype.get = function(name) {
alert(name);
}

var b = new a();

b.get("рони");
Ответить с цитированием
  #9 (permalink)  
Старый 30.10.2013, 22:31
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Chiz
а можно как-нибудь сделать, чтобы спокойно вызывать методы объекта без prototype?
Пиши a.get = a.prototype.get = function () {};
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание функции realpoc Ваши сайты и скрипты 1 07.08.2013 23:36
Создание примитива с таким же именем как у уже существующего свойства функции lancer Общие вопросы Javascript 7 29.07.2013 20:23
Динамическое создание функции FINoM Общие вопросы Javascript 15 19.05.2012 15:15
как предотвратить повторное создание функции kichSman jQuery 3 06.09.2011 13:49
создание функции из исходного кода из userscript KOLANICH Общие вопросы Javascript 0 03.08.2010 22:48