jQuery的封装ajax请求
在 jQuery中 给我们封装了 Ajax请求
不要考虑兼容,跨域等问题,jQuery全部解决,只需要在设定请求时,设定不同的参数,就可以完成不同的请求
jqery的封装原理:
1、js的全局代码区只有一个,这样就会造成同名变量的值会被覆盖。‘
2、使用对象封装,将代码封装到对象中,但对象如果被覆盖,则全部失效,风险极高。
3、使用工厂模式,将代码进行封装,但是并没有解决问题。
4、将封装的函数名字去除,避免覆盖,但是函数没有办法调用了
5、匿名自调用。’可以在页面加载的时候调用一次,但是不能重复调用,并且数据没有办法获取。
6、使用闭包,在全局区中不能够获取函数体内的数据。使用更大作用域的变量来记录小作用域变量的值。
jquery中的extend()方法
通常我们使用jquery的extend()方法时,大都是为了实现默认字段的覆盖,即若传入某个字段的值,则使用传入值,否则使用默认值。
function getOpt(option){
var _default = {
name : 'wenzi',
age : '25',
sex : 'male'
}
$.extend(_default, option);
return _default;
}
getOpt(); // {name: "wenzi", age: "25", sex: "male"}
getOpt({name:'bing'}); // {name: "bing", age: "25", sex: "male"}
getOpt({name:'bing', age:36, sex:'female'}); // {name: "bing", age: 36, sex: "female"}
$.extend()也提供了深度拷贝的方法:jQuery.extend( [deep ], target, object1 [, objectN ] )。若第一个参数是boolean类型,且值是true,那么就会把第二个参数作为目标参数进行合并。
var obj = {name:'wenzi', score:80};
var obj1 = {score:{english:80, math:90}}
$.extend(true, obj, obj1);
obj.score.english = 10;
console.log(obj.score.english); // 10
console.log(obj1.score.english); // 80