Показать сообщение отдельно
  #12 (permalink)  
Старый 17.11.2014, 00:06
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от ОмаЭль
К сожалению мне малость не понятна конструкция with : собственно как она работает просто при добавлении как текст к переменной source.
stringFromInput="cos(x)"//получаем строку из поля ввода
result=Function("x", "with(Math) return "+stringFromInput) (1)
//1) "with(Math) return "+stringFromInput вычисляется в "with(Math) return "+"cos(x)"
//2) "with(Math) return "+"cos(x)" вычисляется в строку "with(Math) return cos(x)" -- строки конкатенируются
//3) выражение Function("x", "with(Math) return cos(x)" ) раскрывается в function (x) { with(Math) return cos(x) }
//4) выполняется инлайн (function (x) { with(Math) return cos(x) })(1) , происходит подстановка 1 на место x
//5) выполняется выражение with(Math) return cos(1), результат возврата записывается в переменную

// with(Math) return cos(1), в твоем случае, это то же что return Math.cos(1)

Вообще, with, это довольно мудреная конструкция, особенно в плане работы с прототипами и глобальной областью. Но в общем случае, ты можешь считать, что она выполняет выражения-свойства и методы в контексте указанного объекта. например
with(Math) alert(sin(1)+cos(1))

Имей в виду, что ее, к сожалению, выкинули из стандарта.

Сообщение от ОмаЭль
помочь с отображением
Честно говоря, я не понял, что ты хочешь. Напиши лучше словами, опиши задачу, подробно.

Последний раз редактировалось krutoy, 17.11.2014 в 00:25.
Ответить с цитированием