Javascript: вопросы по "основам" языка
1. Как получить прототип прототипа?
function F() {} F.prototype.__proto__ //это мы знаем, но интересует кроссбраузерное решение 2. Что это за интересная конструкция и какие еще есть "фишки" в Javascript? Object({name: 'test'}); //создаст объект Object(1.25); // создаст объект Number 3. Почему объект можно создать без скобок (бывает, что нет надобности передавать параметры конструктору, и можно использовать такое выражение): function F() {} var o = new F; // Это кроссбраузерно и является спецификацией языка???? |
Цитата:
Object.getPrototypeOf(Object.getPrototypeOf( obj )) в старые времена когда не было getPrototypeOf делали так obj.constructor.prototype.constructor.prototype Цитата:
Цитата:
функция вызывается по особому с помощью оператора new и скобки ему не обязательны. это кросс. |
Цитата:
function F() {} var f = new F; f.constructor.prototype.constructor.prototype === f.constructor.prototype // true, то есть похоже никак нельзя в ECMA-262 3ей версии получить прототип прототипа кроссбраузерно (getPrototypeOf вроде не поддерживается в IE6-7 typeof Number(11) //"number", но не объект; может использоваться для перевода других типов в строку, а вот new Number(11) - это уже объект |
almac,
ой, я ошибся, я подумал что в пртотипе свойство constructor не найдется и покажется свойство constructor в Object.prototype , запутался, да ты прав, старый javascript говно) Цитата:
я это имел ввиду alert( typeof new Number(11) ) alert( typeof Number(11) ) это конструктор, но если использовать его не как конструктор а как просто функцию передав в него что-то, то он просто законвертит это в число |
Цитата:
Цитата:
var i = new Number(1); var k = 1; alert(typeof i);//object alert(typeof k);//number alert(i.toString(10));//'1' работают методы одинаково alert(k.toString(10));//'1' i += ''; k += ''; alert(typeof i);//string и приводятся тоже одинаково alert(typeof k);//string |
Цитата:
var fConstructor = f.constructor; var fProto = fConstructor.prototype; delete fProto.constructor; var fProtoProto = fProto.constructor.prototype; fProto.constructor = fConstructor; // возвращаем конструктор на место Работает в случае, если цепочка constructor.prototype изначально не была порушена. |
Часовой пояс GMT +3, время: 07:44. |