99赠送有缘人~jQuery里面的jQuery.fn.init()方法中,this为什么指向的是jquery.fn.jquery.init[0]?

thy442030800 2013-10-17 05:57:17
RT,在扒jquery的源码,好奇为什么this在里面指向了这么个玩意儿?jqeury.fn.jquery.init[0]貌似还是个数组?
下班前一帖,晚上来瞅瞅
...全文
377 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
thy442030800 2014-01-21
  • 打赏
  • 举报
回复
自己回答一下, 原因很简单, 在fn的最后面, 有这么三行代码:
jQuery.fn = jQuery.prototype = {
	// For internal use only.
	// Behaves like an Array's method, not like a jQuery method.
	push: core_push,
	sort: [].sort,
	splice: [].splice
};
jq对象本身是个Object,添加了Array的专有方法后,就变得像数组了,看上去就是Object[length],多么像数组啊!!! 嗯。。就是这么回事。 That's all.
thy442030800 2013-10-18
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
什么版本的jquery哦。。jqeury.fn没有jquery属性吧。。 jQuery.fn = jQuery.prototype = { constructor: jQuery, init: function( selector, context, rootjQuery ) { var match, elem, ret, doc; console.log(this) 输出[], init构造中 this是选择的对象集合 //....
版本1.9.1 我也知道jquery.fn没有jquery属性,但是的的确确指向了这个~
thy442030800 2013-10-18
  • 打赏
  • 举报
回复
引用 2 楼 NIHAOX1 的回复:
我是过来帮顶的。。。没深究过这个问题 有时间 去看看 再过来讨论下哈。。。
尼玛。。。
萧萧可乐 2013-10-18
  • 打赏
  • 举报
回复
我是过来帮顶的。。。没深究过这个问题 有时间 去看看 再过来讨论下哈。。。
thy442030800 2013-10-18
  • 打赏
  • 举报
回复
引用 8 楼 showbo 的回复:
我用firebug,显示为[],到是没注意chrome指向jQuery.fn.jQuery.init[0],这就晓不得调试工具怎么指向引用的了。。实际并没有jQuery.fn.jQuery这个属性。。
是的。实际并没有jQuery.fn.jQuery这个属性。 版主大人,您别滴汗啊。。还得看您的呢,都没其他人回复我靠~~~ 其实我想的很简单,init是jQuery.fn的函数,那么这个this就应该指向jQuery.fn的才对。。 前面看到 new jQuery.fn.init( selector, context, rootjQuery ); 我又觉得应该就是指向init。。 本来就有点迷糊了,这个调试工具一调就更浆糊了~
Go 旅城通票 2013-10-18
  • 打赏
  • 举报
回复
我用firebug,显示为[],到是没注意chrome指向jQuery.fn.jQuery.init[0],这就晓不得调试工具怎么指向引用的了。。实际并没有jQuery.fn.jQuery这个属性。。
thy442030800 2013-10-18
  • 打赏
  • 举报
回复
引用 6 楼 showbo 的回复:
[quote=引用 4 楼 thy442030800 的回复:]
[quote=引用 1 楼 showbo 的回复:]
什么版本的jquery哦。。jqeury.fn没有jquery属性吧。。

jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
var match, elem, ret, doc;
console.log(this) 输出[], init构造中 this是选择的对象集合
//....




版本1.9.1
我也知道jquery.fn没有jquery属性,但是的的确确指向了这个~[/quote]

你怎么知道this指向jquery.fn.jquery.init[0]?

jQuery.fn.jquery是jquery的版本,string类型[/quote]
你怎么知道this指向jquery.fn.jquery.init[0]?
-->Chrome单步调试看到的~
好吧 我写的时候没注意大小写,jQuery.fn.jquery是jQuery的版本不假,它显示的是jQuery.fn.jQuery.init[0]
Go 旅城通票 2013-10-18
  • 打赏
  • 举报
回复
引用 4 楼 thy442030800 的回复:
[quote=引用 1 楼 showbo 的回复:] 什么版本的jquery哦。。jqeury.fn没有jquery属性吧。。 jQuery.fn = jQuery.prototype = { constructor: jQuery, init: function( selector, context, rootjQuery ) { var match, elem, ret, doc; console.log(this) 输出[], init构造中 this是选择的对象集合 //....
版本1.9.1 我也知道jquery.fn没有jquery属性,但是的的确确指向了这个~[/quote] 你怎么知道this指向jquery.fn.jquery.init[0]? jQuery.fn.jquery是jquery的版本,string类型
萧萧可乐 2013-10-18
  • 打赏
  • 举报
回复

jQuery.fn = jQuery.prototype = {
	constructor: jQuery,
	init: function( selector, context, rootjQuery ) {
		var match, elem, ret, doc;
		console.log( this instanceof jQuery );   // return true 
                console.log( this instanceof Object );   // return true
		// Handle $(""), $(null), $(undefined), $(false)
Go 旅城通票 2013-10-17
  • 打赏
  • 举报
回复
什么版本的jquery哦。。jqeury.fn没有jquery属性吧。。

jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
var match, elem, ret, doc;
console.log(this) 输出[], init构造中 this是选择的对象集合
//....


87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧