jQuery 使用 Hook 進(jìn)行兼容空入,一般形式如下
var valHooks = {
// 不同于 Object.defineProperty 中 set 和 get有默認(rèn)參數(shù),這里的 get 和 set 是自己傳參
get: function () {},
set: function () {}
}
使用形式
// 某種條件下族檬,需要使用 Hook
var hook = valHooks
// 判斷 Hook 中有 set 或者 get 嗎歪赢?因為,并不是所有的 Hook 有 set 和 get
// 那么兼容問題就在 hook 中被解決了
if (hook && "set" in hook) { hook.set(ele,name,value) }
jquery 中涉及兼容的幾種方法
研究的是 2.0 以上的版本单料,沒有很多處理 ie8-9 兼容的代碼埋凯。這里以 val 為例,它一般用于表單元素扫尖,在沒有 value 的情況下會獲得文本
valHook
- 有 valHook 的幾種元素白对,比如
select
,option
,radio
,checkbox