类的进阶
apply的兩個(gè)參數(shù)分別是上下文和參數(shù)組成的數(shù)組。
function.apply(this, [1, 2, 3]);
call的兩個(gè)參數(shù)是多個(gè),也就是不用數(shù)組包裹參數(shù)。
function.call(this, 1, 2, 3);
常常會遇到事件內(nèi)部沒有this的情況,怎么處理呢?
低級方法:
$('.clicky').click(function(){$(this).hide(); });$('p').each(function(){$(this).remove(); }); var clicky = {wasClicked: function(){ /* ... */ },addListeners: function(){var self = this;
$('.clicky').click(function(){self.wasClicked() }); } }; clicky.addListeners();
高階方法:
var proxy = function(func, thisObject){ return(function(){return func.apply(thisObject, arguments); }); };var clicky = { wasClicked: function(){ /* ... */ }, addListeners: function(){var self = this;
$('.clicky').click(proxy(this.wasClicked, this)); } };
jQuery中proxy()用來實(shí)現(xiàn)將上下文傳給事件的回調(diào)函數(shù)的功能:
$('.clicky').click($.proxy(function(){ /* ... */ }, this));apply還可以用來作委托:
var App { log: function(){ if (typeof console == "undefined") return; //arguments是當(dāng)前調(diào)用的作用域內(nèi)解釋器內(nèi)置的用來保存參數(shù)的“數(shù)組”。 //因?yàn)樗遣豢勺兊?#xff0c;需要jquery.makArray()把它轉(zhuǎn)換成真的數(shù)組。 var args = jQuery.makeArray(arguments); // 插入一個(gè)新的參數(shù) args.unshift("(App)"); // 委托給console console.log.apply(console, args); } };待續(xù)。。
轉(zhuǎn)載于:https://www.cnblogs.com/haimingpro/p/3823038.html
總結(jié)
- 上一篇: Oracle中的USEREVN()
- 下一篇: jquery如何获取元素的滚动高度