Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2015, 18:14
Интересующийся
Отправить личное сообщение для rolleyes Посмотреть профиль Найти все сообщения от rolleyes
 
Регистрация: 06.01.2015
Сообщений: 17

Проверка существования параметра
Здравствуйте.

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

Проверка осуществляется следующим образом:

myObj.prototype.moveTo = function(moveToX, moveToY, moveToD){

if(moveToX && moveToY && moveToD){

			this.moveToX = moveToX;
			this.moveToY = moveToY;
			this.moveToD = moveToD;
			this.moveToT = 0;
			this.moveToStatus = true;
			this.visible = true;
		}


И тут возникает проблема... если в один из параметров я передаю ноль... то при проверке ноль воспринимается как false... Собственно вопросов два:

1. Как передать 0 как число и проверять его существование. И если параметр существует, в независимости от его содержания и т.д...
2. Есть ли способ по друому сделать проверку на наличие параметров передаваемых в функцию и если они есть и в полном составе, то тогда их присваивать вызывающему их объекту...

сорри за сумбур, я совсем нуб...

заранее спасибо за ответы!
Ответить с цитированием
  #2 (permalink)  
Старый 30.08.2015, 18:25
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

можешь проверить на число !isNaN или Number() если там передаешь только числа или еще сравнить с undefined
Ответить с цитированием
  #3 (permalink)  
Старый 30.08.2015, 18:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

rolleyes,
//obj = {moveToX : ...}
myObj.prototype.moveTo = function(obj){

if(obj){
            for(var k in obj) this[k]=obj[k]
		    this.moveToT = 0;
			this.moveToStatus = true;
			this.visible = true;
		}
Ответить с цитированием
  #4 (permalink)  
Старый 30.08.2015, 18:43
Интересующийся
Отправить личное сообщение для rolleyes Посмотреть профиль Найти все сообщения от rolleyes
 
Регистрация: 06.01.2015
Сообщений: 17

caetus, сравнить с undefiened! Вот же мое решение! Спасибо!

рони, var k in obj: вспомнил выразительный джаваскрипт! Круто, тоже попробую!

Спасибо большое!
Ответить с цитированием
  #5 (permalink)  
Старый 31.08.2015, 22:35
Аспирант
Посмотреть профиль Найти все сообщения от forwardonly2015
 
Регистрация: 31.08.2015
Сообщений: 90

rolleyes,
судя по логике твоей функции ты не проверяешь тип передаваемых параметров, лишь только их наличие, соответственно, тебе подойдет просто arguments.length
Ответить с цитированием
  #6 (permalink)  
Старый 31.08.2015, 22:45
Аспирант
Посмотреть профиль Найти все сообщения от forwardonly2015
 
Регистрация: 31.08.2015
Сообщений: 90

рони,
Не совсем понятно, проверку чего решает Ваш вариант. ТС в своем примере проверяет наличие 3-х параметров, Ваш пример допустит в качестве параметра {a: 1} и даже, например, 1, true, etc. Второе, Вы слишком легкомысленно используете for in, в Вашем случае в target-объект будут скопированы все поля, включая всю цепочку родителей. Надо ли это ТС'у? хз.
Ответить с цитированием
  #7 (permalink)  
Старый 31.08.2015, 23:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

forwardonly2015,
скучно с вами, вечно вы с конями из вакуума приходите. уж и ТС хорошо и пример просто показывает вариант решения, а вам василий иванович, лишь бы до фонарного столба доколупатся.
Метод hasOwnProperty это на всякий случай, если вы вместо трёх свойств фигню захотите передать.
Ответить с цитированием
  #8 (permalink)  
Старый 31.08.2015, 23:13
Аспирант
Посмотреть профиль Найти все сообщения от forwardonly2015
 
Регистрация: 31.08.2015
Сообщений: 90

рони,
Это, в данном случае не кони. У ТС'а, насколько я понял, был вопрос о проверке параметров, а Вы его просветили об ином способе передачи. То есть Ваш ответ, помимо всего прочего, не имеет никакого отношения к вопросу. Так что, не скучайте
Ответить с цитированием
  #9 (permalink)  
Старый 31.08.2015, 23:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от forwardonly2015
То есть Ваш ответ, помимо всего прочего, не имеет никакого отношения к вопросу.
ваш бы кругозор, да в мирных целях ...
Ответить с цитированием
  #10 (permalink)  
Старый 31.08.2015, 23:42
Аспирант
Посмотреть профиль Найти все сообщения от forwardonly2015
 
Регистрация: 31.08.2015
Сообщений: 90

Сообщение от рони
если вы вместо трёх свойств фигню захотите передать.
И, кстати, Вы немного не о том. Слово "хотите" тут слабо подходит. В вашем варианте туда будет скопировано все из корневого объекта, это как минимум (исключая неперечисляемые слоты), в том числе и сам moveTo, хотите Вы того, или не хотите.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка существования окна system2 Javascript под браузер 4 18.06.2013 17:20
Проверка существования файла Danie Ваши сайты и скрипты 4 23.02.2012 17:56
htaccess: проверка существования файла greatilya Серверные языки и технологии 0 09.02.2012 09:00
Проверка существования лгина Dmitrri Элементы интерфейса 3 13.01.2010 12:01
Проверка существования входного параметра для функции Axe Я не знаю javascript 2 25.05.2009 14:58