Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Function.prototype - почему нельзя сменить?


Автор: Се ля ви 12.4.2009, 00:31
Нужно заставить ссылку __proto__ у функции B ссылаться не на Function.prototype, как обычно происходит по-умолчанию, а на другую функцию - A.

Вот код:
Код
function A(){}
A.prop1 = 5;

Function.oldPrototype = Function.prototype;
alert(Function.oldPrototype === Function.prototype); //Выводит "true", т.е. всё нормально

Function.prototype = A;
alert(Function.prototype === A); //Выводит "false" - почему???

var B = new Function("");

//Возвращаем всё на место
Function.prototype = Function.oldPrototype;
delete Function.oldPrototype;

alert(B.prop1); //Выводит "undefined"...

//И даже просто
alert(delete Function.prototype); //Выводит "false" - почему?


Я что-то пропустил в спеке и Function.prototype, в отличие от прочих прототипов, помечен {dontDelete}?

P.S. Тестил в Chrom`е и в FF

Автор: Zeroglif 12.4.2009, 11:42
Цитата(Се ля ви @  12.4.2009,  00:31 Найти цитируемый пост)
Я что-то пропустил в спеке и Function.prototype, в отличие от прочих прототипов, помечен {dontDelete}?


А прочие прототипы (Object.prototype, Array.prototype... etc) не помечены {DontEnum, DontDelete, ReadOnly} ?  ;)

Автор: Се ля ви 12.4.2009, 22:20
Похоже, что помечены... Обидно. Выходит, нет никакого способа управлять ссылкой __proto__ у функций так, как это возможно с объектами?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)