proxy用法詳解

2022-03-27 18:32:34 字數 2769 閱讀 4973

jquery中的$.proxy官方描述為:

描述:接受乙個函式,然後返回乙個新函式,並且這個新函式始終保持了特定的上下文語境。

官方api;

jquery.proxy( function, context )

function為執行的函式,content為函式的上下文this值會被設定成這個object物件

jquery.proxy( context, name )

content 函式的上下文會被設定成這個object物件,name要執行的函式,次函式必須是content物件的屬性、

jquery.proxy( function, context [, additionalarguments ] )

function為執行的函式,content為函式的上下文this值會被設定成這個object物件,additionalarguments任何數目的引數,傳遞給function

更詳細的用法參考:

現在讓我們一起來看實際例子:

var objperson = 

}$("#btn").on("click", $.proxy(objperson.test, objperson))

點選按鈕,輸出:name:obj  age:32

objperson.test表示上下文的方法,objperson代表執行的上下文,例子中的this的上下文指的是objperson

更具體的例子如:

var me = 

};var you =

};/* execute you.test() in the context of the `you` object */

/* no matter where it is called */

/* i.e. the `this` keyword will refer to `you` */

var youclick = $.proxy(you.test, you);

/* attach click handlers to #test */

$("#test")

/* this === "zombie"; handler unbound after first click */

.on("click", $.proxy(me.test, me))

/* this === "person" */

.on("click", youclick)

/* this === "zombie" */

.on("click", $.proxy(you.test, me))

/* this === "element" */

.on("click", you.test);

結合以上說明,再寫乙個綜合的例子,例如 js封裝乙個ajax請求,**如下:

var t = ,

url: "",

type: "get",

datatype: "json",

ajaxonly: true,

/*** 取model資料

* @param oncomplete 取完的**函

* 傳入的第乙個引數為model的數第二個資料為元資料,元資料為ajax下發時的servercode,message等數

* @param onerror 發生錯誤時的**

* @param ajaxonly 可選,預設為false當為true時只使用ajax調取資料

* @param scope 可選,設定**函式this指向的物件

* @param onabort 可選,但取消時會呼叫的函式

*/execute: function(oncomplete, onerror, ajaxonly, scope)

}, this);

var __onerror = $.proxy(function(e)

}, this);

this.sendrequest(__oncomplete, __onerror);

},sendrequest: function(success, error) );

var crossdomain = ;

if (this.type == 'post')

//jsonp與post互斥

$.ajax(,

success: function(res) ,

error: function(err)

});},

setparam: function(key, val) else

},removeparam: function(key) ,

getparam: function() ,

dataformat: function(data) ,

ondatasuccess: function() {}

}

呼叫封裝的方法:

function getdata(url) );

t.url=url;

t.type="post";

//呼叫

t.execute(function(data)));

},function(data));

}

proxy用法詳解

jquery中的 proxy官方描述為 描述 接受乙個函式,然後返回乙個新函式,並且這個新函式始終保持了特定的上下文語境。官方api jquery.proxy function,context function為執行的函式,content為函式的上下文this值會被設定成這個object物件 jqu...

Proxy的簡單用法

proxy,原意為 可以修改某些操作的預設行為,即在目標物件之前架設和一層 攔截 在這層攔截上可以對外界的訪問進行過濾和修改。其屬於一種 元程式設計 var proxy newproxy target,handler 其中,target引數表示所要攔截的目標物件,handler引數也是物件,用來定製...

proxy的理解及proxy為什麼可以監聽陣列?

1,proxy的基本理解 proxy是es6中的語法,最為 的功能,當外接要訪問物件的時候,proxy可以做一層攔截,並且可以對這個proxy 進行操作,進而實現對物件的操作。如 var proxy newproxy obj,handler 這裡定義的proxy作為obj的 handler也是個物件...