在用jQuery选择器时候,可以通过下面两种方式获取元素,并得到一个jQuery对象。
var d1 = jQuery(‘#demo01‘); var d2 = new jQuery(‘#demo02‘);
上面两种方式操作结果一致,这让我很好奇,自己模拟了一个类似的实现。
(function(global, undefined){ var jQuery = function(selector, context){ if(!(this instanceof jQuery)) { return new jQuery(selector, context); } /** other code **/ } global.jQuery = jQuery; })(window);
但是我发现这种方式好像也不杂滴,就跑去看了一下jquery源码的实现。
至于new的工作原理,也很简单:
function createObject(constructor) { var o = {}, //第一步,创建一个初始化对象。 params = [].slice.call(arguments,1) || []; //分离出参数 var tmp = constructor.apply(o, params); //第二步,切换作用域,让构造函数中的this指向当前对象o,然后执行构造函数函数。 if(typeof tmp != ‘object‘) { return tmp; } o.__proto__ = constructor.prototype; //第三步,设置原型链 o.constructor = constructor; //第四步,设置构造器 return o; }
这次文章比较水,知识点比较简单,但就这么简单的问题,我之前还没弄明白,的确惭愧。知识重在积累,我必须得不断学习。
原文:http://www.cnblogs.com/as3lib/p/6666603.html