Проверка существования параметра
Здравствуйте.
Есть проблема.. у меня есть функция которая вызывается как с параметрами так и без. Чаще она вызывается без них, он когда я добавляю в нее параметры, она их прописывает в объект, для которого она вызывается. Проверка осуществляется следующим образом: 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. Есть ли способ по друому сделать проверку на наличие параметров передаваемых в функцию и если они есть и в полном составе, то тогда их присваивать вызывающему их объекту... сорри за сумбур, я совсем нуб... заранее спасибо за ответы! |
можешь проверить на число !isNaN или Number() если там передаешь только числа или еще сравнить с undefined
|
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; } |
caetus, сравнить с undefiened! Вот же мое решение! Спасибо!
рони, var k in obj: вспомнил выразительный джаваскрипт! Круто, тоже попробую! Спасибо большое! |
rolleyes,
судя по логике твоей функции ты не проверяешь тип передаваемых параметров, лишь только их наличие, соответственно, тебе подойдет просто arguments.length |
рони,
Не совсем понятно, проверку чего решает Ваш вариант. ТС в своем примере проверяет наличие 3-х параметров, Ваш пример допустит в качестве параметра {a: 1} и даже, например, 1, true, etc. Второе, Вы слишком легкомысленно используете for in, в Вашем случае в target-объект будут скопированы все поля, включая всю цепочку родителей. Надо ли это ТС'у? хз. |
forwardonly2015,
скучно с вами, вечно вы с конями из вакуума приходите. уж и ТС хорошо и пример просто показывает вариант решения, а вам василий иванович, лишь бы до фонарного столба доколупатся. Метод hasOwnProperty это на всякий случай, если вы вместо трёх свойств фигню захотите передать. |
рони,
Это, в данном случае не кони. У ТС'а, насколько я понял, был вопрос о проверке параметров, а Вы его просветили об ином способе передачи. То есть Ваш ответ, помимо всего прочего, не имеет никакого отношения к вопросу. Так что, не скучайте:) |
Цитата:
|
Цитата:
|
forwardonly2015,
не понимаю о чём вы? |
Object.prototype.foo=function(obj){for(var i in obj) this[i]=obj[i]} obj={a: 1} testObj={} testObj.foo(obj) alert(testObj.hasOwnProperty("foo")) |
forwardonly2015,
у всех обьектов будет свойство foo и в чём соль? |
Цитата:
|
forwardonly2015,
не понимаю. |
Цитата:
зачем в обьект с параметрами совать лишнее, тем более за ТС, не нравится предложите лучше, зачем усложнять простое? |
рони,
Насколько я понял, Вы вообще не понимаете ООП в JS. Это понятно, поскольку годной литературы по JS мало, если не сказать отсутствует. Могу посоветовать почитать что-нибудь по Self, Io, отчасти Lua, еще поможет Smalltalk и Ruby, хотя в последних классы, не совсем то, но их с JS роднит динамика. А с ходу Вы это не поймете все равно, бесполезно Вам что-либо объяснять тут. |
Цитата:
|
forwardonly2015,
спасибо за совет, но этоже бесполезно :) |
Цитата:
|
Цитата:
|
forwardonly2015,
сложно у меня с пониманием :) вас например не понимаю, js не понимаю, а куды с подводной лодки денешься, к утру надо чтоб работало :lol: |
рони,
Смотря что работало бы. Если ваши задачи заключаются в рисовании рисулек и числодрочерстве, в вашей лодке это не нужно. Это потребуется в той лодке, где люди занимаются разработкой и проектированием. Каждый инструмент для своей задачи. Гвозди микроскопом никто забивать не принуждает |
forwardonly2015,
откуда столько злости к голоте? |
рони,
Никакой злости нет, я сказал лишь о нужности того или иного подхода в контексте решения той или иной задачи |
У меня возникает ощущение что foo вернулся.
|
Цитата:
|
рони,
Вы задели меня за живое, сильно комплексую из-за этого. Одно утешение, я не бегаю вокруг кода с бубнами, в отличие от некоторох идейно-религиозных варистов. |
forwardonly2015,
Держи хвост морковкой! |
Часовой пояс GMT +3, время: 12:31. |