对原型这章的建议
来源:3-8 实际应用 - 总结
李行知
2018-07-25
我感觉老师在犯一个错误。不是关于知识方面的,而是讲解方面的。
因为看高级课程的多少对原型有所了解。但是用的不对,不是看不到jq的源代码,而是不明白为什么这么做。。。等真的自己去做的时候才发现有问题。
自己看这章的时候一直有个问题,为什么呢?为什么jq这么麻烦呢?为什么不直接写prototype呢?
于是我自己写了一下,发现以下代码
let jq = function (selector) { let slice = Array.prototype.slice let dom = slice.call(document.querySelectorAll(selector)) let len = dom ? dom.length : 0 for (let i = 0; i < len; i++) { this[i] = dom[i] } this.length = len this.selector = selector || '' } jq.prototype = { css() { alert('css') }, html() { alert('html') }, } window.$ = jq
需要在外面来使用
new才能正确的使用,所以才明白了这个地方为啥会看起来这么复杂。为什么非要有这么多的init呢?很多时候不仅仅想知道的是,怎么做的,而是,为什么这么做
感觉老师这个地方可能把我们想的太厉害了,如果太厉害了其实这个点就没有什么意义了。。。包括这个点我现在还是不明白,为什么还要有一个init
init.prototype=jq.fn
跟
jq.fn.init.prototype=jq.fn的效果不是一样的吗?
那为啥jQuery非要再加一个变量呢?
这里希望老师可以解答一下
写回答
1回答
-
jQuery 和 zepto 是同一种使用凡是,但是完全是两种原型的设计方式,至于为何绕来绕去的这么设计,我也没有准确的答案。
不过,这个问题不用过于纠结,能通过这个地方把原型熟悉了即可。
012018-07-25
相似问题