У меня такая проблема. Мне нужно изменить свойство объекта защищённого от переопределения функцией Object.defineProperty({configurable: true}).
Я пытаюсь сделать это через наследование, которого понятно нет в JavaScript. Для этого беру функции которые предложены для таких задач гурами javascript
:
function extend(Child, Parent) {
    var F = function() { }
    F.prototype = Parent.prototype
    Child.prototype = new F()
    Child.prototype.constructor = Child
    Child.superclass = Parent.prototype    
}
// копирует все свойства из src в dst,
// включая те, что в цепочке прототипов src до Object
function mixin(dst, src){
	// tobj - вспомогательный объект для фильтрации свойств,
	// которые есть у объекта Object и его прототипа
	var tobj = {}
	for(var x in src){
		// копируем в dst свойства src, кроме тех, которые унаследованы от Object
		if((typeof tobj[x] == "undefined") || (tobj[x] != src[x])){
			try {
				dst[x] = src[x];
			} catch (e) {
				console.error("Error property: " + x);
			}
		}
	}
	// В IE пользовательский метод toString отсутствует в for..in
	if(document.all && !document.isOpera){
		var p = src.toString;
		if(typeof p == "function" && p != dst.toString && p != tobj.toString &&
		 p != "\nfunction toString() {\n    [native code]\n}\n"){
			dst.toString = src.toString;
		}
	}
}
Далее мой код вылетающий по ошибке на dispatchEvent:
var myKeyboardEvent = function() {
    this.getLastElement = function() {
        return this[this.length-1];
    }
}
extend(myKeyboardEvent, KeyboardEvent);
//elem может быть любое поле <input type="text" name="elem" id="elem">
function pressKey(elem){
	var evt = new myKeyboardEvent("keypress");
	mixin(myKeyboardEvent.prototype, new KeyboardEvent("keypress"));
	elem.dispatchEvent(evt);
}
Получаю ошибку:
Uncaught TypeError: Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'.
Мне надо переопределить свойство isTrusted в объекте возвращаемом KeyboardEvent.
 Как нибудь вообще можно корректно наследовать встроенные объекты JavaScript?
Как нибудь вообще можно корректно наследовать встроенные объекты JavaScript?