1.无new关键字
(function () {
var xx = function () {
return new xx.prototype.init()
}
xx.prototype = {
init: function (){
this.name = '香香'
},
sex: function() {
console.log('sex fun')
},
age:20
}
xx.prototype.init.prototype = xx.prototype //这一句使得init出来的实例都能访问xx原型上的方法
window.xx = xx
})()
var mm = xx()
2.链式调用
每个扩展的方法都返回 this
3.插件接口
.fn.extend 为jquery函数增加方法 或者是为原型增加方法(也就是为实例增加公共方法) 因为(this的指向不同)
默认false//第一个参数为boolean的时候 表示要是深递归 (但是内部都为false 所以不管是true还是false 都是深递归咯)
// 参数只有一个 并且为对象或者function 就是为当前对象(this)添加静态方法
//参数多于一个的时候 表示吧后面的对象都拷贝到第一个对象
//传参错误时 返回一个空对象
4.ajax
针对ajax提供2种回调方式,内部的complete回调与外部的done回调
全局document上都能捕获到ajax的每一步的回调通知
换句话说,针对ajax的请求,每一步的状态,成功或者失败,我们有3种方式可以获取,但是每一种还是有各自的区别
1 ajax的参数回调 (回调通过实参传递)
2 基于deferred方式的done回调
3 全局的的自定义事件的回调 在document上绑定 ajaxstart等事件
XMLHttpRequest.readystate 0//未打开(open没执行) 1// 未发送(send没执行) 2// 响应头已经回来了 但是response还没回来 3// response正在下载 4// response 下载完成 请求完毕
XMLHttpRequest.status // 请求的状态码
5.callback
判断数组的时候 !arr && arr.length && typeof arr != 'string'
网友评论