2015-06-30 3 views
-1

Можно ли подключить обратный вызов к встроенной функции JS. Например, когда вызывается Array.prototype.push('d'), я хочу запустить другую функцию. Является ли это возможным?Обратный вызов для встроенной функции JavaScript

UPDATE:

function Dummy() {}; 

Dummy.prototype = Array.prototype; 
var arrObj = new Dummy(); 

var domElement = 'itemsList'; 

arrObj = ['werew', 'werewr', '234324']; 


(function(native) { 
    arrObj.push = function() { 
     native.apply(this, arguments); 
     arrObj.render(domElement); 
    }; 
})(arrObj.push); 



arrObj.addItem = function(item) { 
    this.push(item); //Uncaught TypeError: this.push is not a function 
    this.render(domElement); 
    return this; 
} 
+0

Обычно вы не должны модифицировать собственные функции, если у вас есть действительно веские причины для этого. –

+0

Кажется, у вас есть некоторые недоумения. Сначала вы объявляете 'arrObj' как объект без массива, который наследуется от' Array.prototype', а затем вы перезаписываете его с помощью реального массива. Таким образом, первое бесполезно. – Oriol

+0

Я назначаю его прототипом Array, чтобы я мог перезаписать методы массива с эффектом Array. –

ответ

3

Вы можете захватить его с помощью собственной функции:

(function(native) { 
    Array.prototype.push = function() { 
    native.apply(this, arguments); // Redirect call to the native function 
    // Do something here 
    }; 
})(Array.prototype.push); 
+1

@ JS-JMS-WEB Вы не следуете коду в этом ответе, и JavaScript чувствителен к регистру. –

Смежные вопросы