原型如何实际应用
jquery和zepto的简单使用

zepto如何使用原型
(function (window) {
var zepto = {}
function Z(dom, selector) {
var i, len = dom ? dom.length : 0
for (i = 0; i < len; i++) {
this[i] = dom[i]
}
this.length = len
this.selector = selector || ''
}
zepto.Z = function (dom, selector) {
return new Z(dom, selector)
}
zepto.init = function (selector) {
var slice = Array.prototype.slice
var dom = slice.call(document.querySelectorAll(selector))
return zepto.Z(dom, selector)
}
var $ = function (selector) {
return zepto.init(selector)
}
window.$ = $
$.fn = {
css: function (key, value) {
alert('css')
},
html: function (value) {
return '这是一个模拟的 html 函数'
}
}
Z.prototype = $.fn
})(window)
jquery如何使用原型
(function (window) {
var jQuery = function (selector) {
return new jQuery.fn.init(selector)
}
jQuery.fn = {
css: function (key, value) {
alert('css')
},
html: function (value) {
return 'html'
}
}
var init = jQuery.fn.init = function (selector) {
var slice = Array.prototype.slice
var dom = slice.call(document.querySelectorAll(selector))
var i, len = dom ? dom.length : 0
for (i = 0; i < len; i++) {
this[i] = dom[i]
}
this.length = len
this.selector = selector || ''
}
jQuery.fn.init.prototype = jQuery.fn
window.$ = jQuery
})(window)
为什么要把原型方法放在$.fn()?
// 因为要扩展插插件,做一个简单的插件的例子
$.fn.getNodeName = function() {
return this[0].nodeName
}
好处:
- 只有$会暴露在window全局变量
- 将插件扩展统一到$.fn.XXX这一个接口, 方便使用
原型如何满足扩展