Вызов стандартного конструктора без "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:16. |