Как одной функции присвоить другую с параметрами без ее вызова
Собсно сабж такой.
Не могу понять возможно ли. Нужно чтобы функция b() вызывала функцию a(1), а с() вызывала функцию a(2). Но не вызывать a() в момент описания b() и c()
function a(s){
alert (s)
}
b = a(1) // но тут разумеется уже вызывается a()
с = a(2)
b() // вызываться должно только тут
c() // и тут
Как это реализовать? Подскажите.. |
function a(s){
alert (s)
}
b = function () {
a(1)
}// но тут разумеется уже вызывается a()
c = function () {
a(2)
}
b() // вызываться должно только тут
c() // и тут
Ну или так:
function a(s){
return (s)
}
b = a(1) // но тут разумеется уже вызывается a()
c = a(2)
alert(b) // вызываться должно только тут
alert(c) // и тут
|
угу. точн.
спасибо..) |
Цитата:
|
Функция в js - это представляющий её текст, поэтому этот текст можно присваивать любым переменным.
Не совсем то, что вы хотели, но можно и так.
var a = function (s){
alert(s)
}
b = a;
b(3);
|
всё в яваскрипте объект, кроме строки и числа. хотя, если подумать, то они тоже объекты))
|
это шутка такая была вообще-то
я просто к тому, что простые типы тоже имеют обёртки вроде Number() или String(), которые позволяют им иметь методы. разве не так? |
Цитата:
Да и вообще программирование в некотором приближении - это работа с текстом, что-то пишем, транслятор это разбирает, что-то получаем. |
Maxmaxmахimus,
var a = function (s) {
alert(s)
}
alert(a)
Про то, что с функцией можно работать как с объектом, конечно, также надо знать. |
Цитата:
2. в javascript знаю только 6 (null, undefined, string, boolean, number, object). в конечном счете даже примитивный тип можно назвать похожим на объект, так как у него есть методы (toLowerCase(), у строки). кроме того var str = 'string'; str.prop = 11; не выведет ошибку именно из-за того, что у примитивного типа "строка" есть обёртка в виду String(). короче предлагаю закрыть тему. |
Функция хранится в переменной в виде текста, вот что я хотел сказать и потом пояснил, за ту неточность пардон.
|
Ладно, Maxmaxmахimus, покажи мастер-класс: какими словами (только нормальными, без сленга) описать результат вывода alert-а в этом примере?
var a = function (s) {
alert(s)
}
alert(a)
|
Цитата:
Цитата:
|
Maxmaxmахimus, не кодом.
Цитата:
Как правильно на словах обосновать текст функции, выводимый в alert() |
bes,
alert это тоже метод глобального объекта, который при вызове приводит переданное ему значение к строке. объекты приводятся к строке путём вызова метода toString(). выше максмакстампакс показал как можно, переопределив этот метод изменить поведение alert(). |
ок, всё встало на свои места, tadjik1, спасибо
|
здесь + приводит к строке
|
alert( typeof (function (){} + function (){}) )
|
var a = new Boolean(false); if(a) alert(a); |
function q (){}
q.valueOf = function(){
return true
}
function w (){}
w.valueOf = function(){
return false
}
alert( q + w )
Далее можно не продолжать |
ну не совсем так)
а вообще пример, который я привел, меня в замешательство прямо-таки сумел поставить. мой любимый, можно сказать) кто скажет в чем дело получит плюсик в карму) |
|
максмакстампакс, извини, но не получается поставить тебе плюсик, вылазит сообщение (вы должны поставить оценку еще кому-нибудь, прежде чем...). bes'у поставил, а тебе не получается(
вообще да, классная особенность, рад, что понравилась) |
в общем-то и желания нет
|
| Часовой пояс GMT +3, время: 03:41. |