Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
本机JavaScript函数的回调_Javascript - Fatal编程技术网

本机JavaScript函数的回调

本机JavaScript函数的回调,javascript,Javascript,是否可以将回调附加到本机JS函数。例如,当调用Array.prototype.push('d')时,我想启动另一个函数。可能吗 更新: function Dummy() {}; Dummy.prototype = Array.prototype; var arrObj = new Dummy(); var domElement = 'itemsList'; arrObj = ['werew', 'werewr', '234324']; (function(native) {

是否可以将回调附加到本机JS函数。例如,当调用
Array.prototype.push('d')
时,我想启动另一个函数。可能吗

更新:

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;
}

您可以使用自己的功能劫持它:

(函数(本机){
Array.prototype.push=函数(){
native.apply(this,arguments);//重定向对本机函数的调用
//在这里做点什么
};
})(Array.prototype.push);

通常情况下,除非你有很好的理由,否则不应该修改本机函数。看起来你有一些困惑。首先将
arrObj
声明为从
array.prototype
继承的非数组对象,然后用实际数组覆盖它。所以前者是无用的。我将其分配为数组原型,这样我就可以用实际影响数组的方式覆盖数组方法。我认为您需要这样的内容:@JS-JMS-WEB您没有遵循这个答案中的代码,JavaScript是区分大小写的。