Как одной функции присвоить другую с параметрами без ее вызова
Собсно сабж такой.
Не могу понять возможно ли. Нужно чтобы функция 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, время: 21:33. |