为了账号安全,请及时绑定邮箱和手机立即绑定

在console中执行如下:

var aQuery = function(selector) {
    
	if (!(this instanceof aQuery)) {
               console.log(this); //window
               console.log('zeze');//zeze
                return new aQuery(selector);//疑问:这块不是直接return了吗?为何下面的ddd会输出。
	}
        console.log('ddd');//ddd 
	var elem = document.getElementById(/[^#].*/.exec(selector)[0]);
	this.length = 1;
	this[0] = elem;
	this.context = document;
	this.selector = selector;
	this.get = function(num) {
		return this[num];
	}  
        console.log(this); //aQuery
	return this;
} 
aQuery('#hehe').length; //1


正在回答

1 回答

啊明白了,这里执行了两次,第一次,aQuery("#hehe")调用,this是window,返回new aQuery("#hehe"),然后继续调用方法,此时this为aQuery.

2 回复 有任何疑惑可以回复我~
#1

慕慕8729977

原来是这样。
2016-01-01 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信