多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > web前端 > jscript > Hook Javascript Function

Hook Javascript Function

來源:程序員人生   發(fā)布時(shí)間:2013-11-04 13:31:48 閱讀次數(shù):3021次
在公文升級(jí)方案中, 因?yàn)槭褂昧诵履0澹?我需要在原來系統(tǒng)執(zhí)行某幾個(gè)函數(shù)之前, 做一些檢查,如果成立則執(zhí)行原有函數(shù),否則執(zhí)行我的新邏輯,然后再依情況決定是不是執(zhí)行原函數(shù)。

我們知道,Javascript中函數(shù)有靜態(tài)函數(shù)、成員函數(shù)和實(shí)例化對(duì)象的成員函數(shù)之分,這些函數(shù)的實(shí)現(xiàn)存在正常函數(shù)和匿名函數(shù)的區(qū)分。所以在我們Hook成員時(shí),我們要對(duì)這些情況兼而顧之。

例如對(duì)與下列函數(shù)Hook調(diào)用,預(yù)想產(chǎn)生如下的輸出:

//全局函數(shù)無參數(shù)

function Method1(){

alert('Method1');

}

 

Method1.hook(function()

{

alert('befor Method1');

return true;

},

function()

{

alert('after Method1');

}

);

 

Method1();

/* 輸出

befor Method1

Method1

after Method1

*/

alert('-----------------');

//全局函數(shù)有參數(shù)

function Method2(name){

alert('Method2 with ' + name);

}

Method2.hook(function(name)

{

alert('befor Method2 with ' + name);

return true;

},

function()

{

alert('after Method2 ');

}

);

Method2('evlon');

/* 輸出

befor Method2 with evlon

Method2 with evlon

after Method2

*/

 

alert('-----------------');

 

//Hook字符串的toString 函數(shù)

String.prototype.toString.hook(String.prototype, function()

{

alert('befor string.toString');

return true;

});

 

var s = "return s";

alert(s.toString());

/* 輸出

befor string.toString

return s

*/

alert('-----------------');

 

 

//Hook 系統(tǒng)已有全局函數(shù)parseInt

parseInt.hook(function()

{

alert('befor parseInt');

return true;

});

 

alert(parseInt('5'));

/* 輸出

befor parseInt

5

*/

alert('-----------------');

 

//Hook 所有數(shù)組對(duì)象的join 方法

Array.prototype.join.hook(Array.prototype, function(span)

{

alert('befor Array.prototype.join separator ' + span);

return true;

});

 

alert([3,5,6].join(','));

/* 輸出

befor Array.prototype.join separator ,

3,5,6

*/

alert('-----------------');

 

var list = [3, 5, 6];

//Hook list 這個(gè)實(shí)例數(shù)組對(duì)象的join 方法

list.join.hook(list, function(span)

{

alert('befor list.join separator ' + span);

return true;

});

 

alert(list.join(','));

/* 輸出

befor list.join separator ,

befor Array.prototype.join separator ,

3,5,6

*/

alert('-----------------');

 

 

var list2 = [3, 5, 6, 7];

// 此處調(diào)用不會(huì)產(chǎn)生befor list.join separator ,

alert(list2.join(','));

 

/* 輸出

befor Array.prototype.join separator ,

3,5,6,7

*/

alert('-----------------');

//自定義類

function People() {

//成員函數(shù)帶參數(shù)

this.getName = function(name) {

alert('in getName with ' + name);

return 'return evlon';

}

 

}

 

var p = new People();

var p2 = new People();

 

//這里我們只Hook實(shí)例p2 的函數(shù)調(diào)用

p2.getName.hook(p2, 'getName2',

function(name) {

alert('befor getName2 with ' + name);

return true;

},

function() {

alert('after getName2');

}

);

p2.getName.hook(p2,

function(name) {

alert('befor getName with ' + name);

return true;

},

function() {

alert('after getName');

}

);

 

//因?yàn)橹籋ook了P2, 對(duì)這個(gè)調(diào)用無影響

alert(p.getName('argName'));

/* 輸出

in getName with argName

return evlon

*/

alert('-----------------');

 

alert(p2.getName('argName'));

/* 輸出

befor getName with argName

in getName with argName

after getName

return evlon

*/

 

alert('-----------------');

alert(p2.getName2('argName2'));

/* 輸出

befor getName2 with argName2

in getName with argName2

after getName2

return evlon

*/

 

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品欧美亚洲韩国日本99 | 羞羞网站在线播放 | 欧美1区二区三区公司 | 久久国产亚洲欧美日韩精品 | 波多野结衣免费观看视频 | 欧美亚洲欧美区 | 国产免费网站看v片元遮挡 国产免费午夜a无码v视频 | 免费a级特黄国产大片 | 国产91精品高清一区二区三区 | 久久成人精品 | 成人爱av18丰满 | 亚洲欧美激情视频 | 天堂视频在线 | 亚洲欧美自拍视频 | 欧美一级黄色片视频 | 精品成人免费自拍视频 | 国产高清视频 | 不卡视频一区二区三区 | 久草视频福利在线观看 | 中文字幕中文字幕中中文 | 国产亚洲精品观看91在线 | 高清免费a级在线观看国产 高清免费国产在线观看 | 一区二区视频在线观看 | 亚洲www在线观看 | 秋霞午夜鲁丝片午夜精品久 | 全部无卡免费的毛片在线看 | 影音先锋 色天使 | 国产乱码精品一区二区三上 | 多人伦交性欧美在线观看 | 在线观看一区二区三区视频 | 欧美第一网站 | 国产高清吃奶成免费视频网站 | avtt亚洲一区中文字幕 | 手机看片国产免费 | 欧美人与牲动交xxxx | 欧美超清性videosfreehd | 特级淫片国产免费高清视频 | 亚洲高清成人欧美动作片 | 波多野结衣视频在线播放 | 欧美高清一区 | 国产成人在线播放视频 |