Манипуляция с function.__proto__
Добрый вечер,
Прошу мнения знающих людей. Возникла необходимость написания библиотеки "классов", при этом встал вопрос чрезмерного захламления прототипа, вот и подумал часть функционала перенести в "статическую" область, изменяя прототип конструктора на родительский конструктор. Вообще-то всё вроде получается, но я такого ещё не встречал. Вообще, можно так писать? Если нет, то в чем проблема? Проверил в IE, FF, Opera... if( true ){ function f1(){} f1.say = function(){ var n = [], f = this; while( f && f.sname ){ n.push( f.sname ); f = Object.getPrototypeOf( f ); } alert( 'f1.say ' + n.join(', ') ); } f1.sname = 'f1'; f1.prototype = { constructor : f1, say : function(){ var n = [], proto = this.constructor.prototype; while( proto && proto.constructor && proto.constructor.sname ){ n.push( proto.constructor.sname ); proto = Object.getPrototypeOf( proto ); } alert( 'f1.prototype.say ' + n.join(', ') ); } } function f2(){} f2.sname = 'f2'; Object.setPrototypeOf( f2, f1 ); f2.prototype = Object.create( f1.prototype, { constructor : { value : f2 } }); function f3(){} f3.sname = 'f3'; Object.setPrototypeOf( f3, f2 ); f3.prototype = Object.create( f2.prototype, { constructor : { value : f3 } }); var f = new f3(); f.say(); f3.say(); } |
Часовой пояс GMT +3, время: 08:10. |