return new ajQuery.fn.init(selector);
init里面直接返回对象出来了,为什么前面还要new呢。
return new ajQuery.fn.init(selector);
init里面直接返回对象出来了,为什么前面还要new呢。
2014-11-03
如果不用new,返回的是aQuery.prototype,当你每次调用aQuery(selector)的时候返回的都是同一个(aQuery.prototype)对象,一旦对其进行操作就会对所有的造成影响。加new之后对每次返回的对象进行分离,即this被分离,每次都是一个新的实例对象(__proto__属性引用同一个原型对象aQuery.prototype,故拥有aQuery.prototype所有的属性),你对实例对象操作也只会影响其自身的属性,而不会影响aQuery.prototype。好比,aQuery("aaa").bbb = "ccc"只会改变实例对象的属性(即使aQuery.prototype有bbb = "ddd"也不会有影响,且调用的时候会优先查找对象自身的属性)。
举报