extend有两个重要功能:
1. 可以合并对象
2. 可以合并到$上
如果传多个对象,那么将合并到第一个对象上:
var people1 = {
fanghuayong: {
age: 24,
sex: 'female'
},
luna: 20,
tool: function() {
console.log('自定义工具方法')
}
}
var people2 = {
neza: {
age: 22,
sex: 'male',
}
}
$.extend(people1, people2);
console.log(people1);
这是浅拷贝,如果第二个Obj的参数在拷贝后改动,第一个中对应的数据也会改动,如果需要深拷贝,只需在第一个obj前面传true即可。
$.extend(people1, people2); // 默认浅拷贝 若需要深拷贝 则只需在第一位传true即可
$.extend(true, obj, people1, people2) // 深拷贝
people2.neza.sex = 'female';
console.log(people1);
console.log(obj);
如果只传一个对象,那么将合并到$上
合并求最大项 或最小项
var arr = [20, 10, 5, 55, 30];
$.extend({
max: function(arr) {
var max = arr[0];
for(var i = 1; i < arr.length; i++) {
var cur = arr[i];
cur > max ? max = cur : null;
}
return max
},
mix: function(arr) {
var min = arr[0];
for(var i = 1; i < arr.length; i++) {
var cur = arr[i];
cur < min ? min = cur : null;
}
return min
}
})
$.extend 和 $.fn.extend有什么区别:
$.extend 合并到对象上 工具方法
$.fn.extend 合并到原型prototype上 实例方法
var obj2 = {
aa: function() {
console.log('实例方法')
}
}
$.fn.extend(obj2);