2013-03-18 2 views
2

Как следует инициализировать Function constructor функцию:Инициализация конструктора функций в JS?

(как, кажется, работает.)

так:

var t= new Function ("a","alert(a)"); 
t(3)//3 
alert(Object.prototype.toString.apply(t)); //[object Function] 

или

var t= Function ("a","alert(a)"); //without new 
t(3) //3 
alert(Object.prototype.toString.apply(t));//[object Function] 

Есть ли какая-то разница?

jsbin

ответ

3

Они идентичны. Из the spec:

Когда Function называется функция, а не как конструктор, он создает и инициализирует новый объект Function. Таким образом, вызов функции Function(…) эквивалентен выражению создания объекта new Function(…) с теми же аргументами.

+0

Благодарим вас и жалею, что не нашли его сами. (Искал хотя) –

1

Оба эти же.

Но если вы используете новое, каждое свойство внутри объекта будет иметь новый экземпляр.

Смежные вопросы