Вызов стандартного конструктора без "new"
Что-то меняется если вызывать стандартные конструкторы без "new"?
Например, "Object(true)" вместо "new Object(true)". |
Object без new подобен Object'у c new, но без new.)
|
Клёва :)
|
Цитата:
var foo = Object(true); alert(foo); а в этом: new отвечает за создание внутреннего метода [[Construct]] и инициализацию его аргументов function Foo() { // конструктор А this.bar = true; } var foo = new Foo; alert(foo.bar); |
Цитата:
|
monolithed
Это как бы очевидно, но конкретно для пустого объекта роли не играет. |
Цитата:
Цитата:
так да: var date = new Date; alert(date.getDate()); а вот так уже нет: var date = Date; alert(date.getDate()); а для Array, String, Number, Function, RegExp вполне: alert('foo'.match(RegExp('\\w', 'g'))); |
"new Boolean(true)" это тоже примитивный тип? Наверное, там что-то вроде того:
function Object(item) { if (item != null) { return new item.constructor(item); } /* ..... */ } UPD: хотя нет, если бы так, то alert срабатывал бы больше одного раза: function Foo() { alert('Foo'); } var foo = new Foo(); Object(foo); new Object(foo); |
кстати, Преобразование типов
|
Цитата:
var n = 5; alert('test' in Object(n));// false alert('test' in new Number(n));// false alert('test' in n.valueOf());// error alert('test' in Number(n));// error |
Часовой пояс GMT +3, время: 14:06. |