实现jQuery的$.extend方法

var o1 = {
	hello : 1,
	old : 555
}, o2 = {
	abc : 55555555,
	hello : 2,
	fun : function() {
		alert(111);
	}
}, o3 = {
	third : 9999
};
function cloneObj(oldObj) {//复制对象方法
	if ( typeof (oldObj) != ‘object‘)
		return oldObj;
	if (oldObj == null)
		return oldObj;
	var newObj = new Object();
	for (var i in oldObj)
	newObj[i] = cloneObj(oldObj[i]);
	return newObj;
};
function extendObj() {//扩展对象
	var args = arguments;
	if (args.length < 2)
		return;
	var temp = cloneObj(args[0]);
	//调用复制对象方法
	for (var n = 1; n < args.length; n++) {
		for (var i in args[n]) {
			temp[i] = args[n][i];
		}
	}
	return temp;
}

var t = extendObj(o1, o2, o3);
console.log(t);
console.log(o1);
console.log(o2);
console.log(o3);

  

时间: 2024-12-16 06:43:13

实现jQuery的$.extend方法的相关文章

jQuery.extend()方法和jQuery.fn.extend()方法

jQuery.extend()方法和jQuery.fn.extend()方法源码分析 这两个方法用的是相同的代码,一个用于给jQuery对象或者普通对象合并属性和方法一个是针对jQuery对象的实例,对于基本用法举几个例子: html代码如下: <!doctype html> <html> <head> <title></title> <script src='jquery-1.7.1.js'></script> <

jQuery的extend方法的深层拷贝

一些东西长时间不用就忘了,比如这个jQuery的extend方法的深层拷贝,今天看单页应用的书的时候,看到entend第一个参数是true,都蒙了.也是,自己的大部分对jQuery的学习知识来自锋利的jQuery那本书,好多知识没有讲到,平时不用的知识也就忘了. 废话不多说,jQuery的extend方法的深层拷贝的学习,直接看这篇文章吧,自己不想写了.

理解一下jQuery.extend()和jQuery.fn.extend()方法

为了方便用户创建插件,jquery提供了jQuery.extend()和jQuery.fn.extend()方法.1. jQuery.extend() 方法有一个重载. jQuery.extend(object) ,一个参数的用于扩展jQuery类本身,也就是用来在jQuery类/命名空间上增加新函数,或者叫静态方法,例如jQuery内置的 ajax方法都是用 jQuery.ajax()这样调用的,有点像 "类名.方法名" 静态方法的调用方式.下面我们也来写个jQuery.extend

jQuery中extend方法

$.extend 用一个或多个其他对象来扩展一个对象,返回被扩展的对象. 参数类型1:只传入一个对象就是对jQuery的工具方法进行扩展. 1 $(function(){ 2 $.extend({ 3 console: function(sMsg){ 4 console.log(sMsg); 5 } 6 }); 7 $.console('jQuery');// jQuery 8 }); 参数类型2:传入多个对象就是对第一个对象进行扩展. 1 $(function(){ 2 var oTarget

jQuery的$.extend方法使用

一.需求 项目中有多个模块用到jQuery中的DataTable插件.开始开发时,各自使用自己的配置,导致表格的一些统一的配置被分散到各个模块中.现想将这些统一的配置提取到公共js中,以便于方便修改统一配置(做人做事都有一个度,不是非黑即白,水至清则无鱼.程序也是一样,都想将代码写成统一的,但是各模块的功能又是有区别的,所以总是统一.特性.再到统一部分). 二.方案 一般像这种有配置参数的jQuery的插件(DataTable.Flot等),都会有一个默认的配置,在实现中基本都会用到$.exte

jQuery的extend方法

jq中的extend在面试中经常会被问道,今天我总结一个下有关于extend的用法三种进行对比,可能不全,希望大家指点, 用法一: $.extend({})  ,为jQuery类添加方法,可以理解为扩展静态方法 用法二:$.fn.extend({})  插件,对jQuery.prototype进行扩展,提到插件那么就得说一下另一种方法$.fn.method = function(){} 1. $.fn.method = function(){} 可以定义一个方法 2 . $.fn.extend(

jQuery.extend()方法和jQuery.fn.extend()方法源码分析

这两个方法用的是相同的代码,一个用于给jQuery对象或者普通对象合并属性和方法一个是针对jQuery对象的实例,对于基本用法举几个例子: html代码如下: <!doctype html> <html> <head> <title></title> <script src='jquery-1.7.1.js'></script> </head> <body> <img src=''/>

jQuery.extend()、jQuery.fn.extend()扩展方法详解

jQuery自定义了jQuery.extend()和jQuery.fn.extend()方法.其中jQuery.extend()方法能够创建全局函数或者选择器,而jQuery.fn.extend()方法能够创建jQuery对象方法. 例如: jQuery.extend({ showName : function(name){ alert(name) } }); jQuery.showName("深蓝"); jQuery.extend()除了可以创建插件外,还可以用来扩展jQuery对象

jQuery.extend方法和开发中变量的复用

最近在用commonJS规范进行客户端开发,遇到如下问题: 一般一个模块内部可能会定义一系列变量或一系列相关变量,比如写了一个颜色选择弹框模块大概会有如下变量定义 var settings = { //设置它是否绝对定位 position: { //定位可以是绝对定位,可以是相对定位(需要有target),也可以是默认定位 type: "none", top: 30, left: 30, //表示相对于目标的定位 target: "", zindex: 0 }, /