自己封装jquery相关笔记(三)

1.js函数的称呼
◆普通函数:直接定义或者声明的函数,var fn=function() {},function fn() {}
◆方法:如果一个函数有了宿主,那么这个函数称作宿主的方法,var obj={fn:function() {} };
◆构造函数:如果一个函数,被通过new用来创建对象,那么这个函数又有了一个新的称呼,叫做构造函数
◆回调函数:如果一个函数,被作为参数传递给另外一个函数,那么这个函数(指的是被传递的函数)就可以称为回调函数



2.js中的静态方法和实例方法
◆实例成员:提供给实例使用的方法和属性,就称作实例成员。
◆实例方法:提供给实例使用的方法,就称作实例方法
◆静态成员:提供给函数使用的方法和属性,就称之为静态成员,也称为类成员。
◆静态方法:提供给函数使用的方法,就称之为静态方法,也称为类方法。
◆类:在ES6之前,通常会把构造函数当作是类。
◆实例方法需要new一个实例然后再调用,静态方法只需要通过构造函数名.方法名,直接调用即可,如果一些方法,通用性已经很强了,那么就不需要添加到实例中,可以考虑直接加到构造函数上作为静态方法来使用。



3.实例方法复用静态方法(实例方法中调用构造函数上的方法)
◆代码【
function Person(name){
this.name=name;
//实例方法
this.getAge=function(){
//实例方法 复用静态方法
Person.getAge(this.name);
}
}
//静态方法
Person.getAge=function(name){
return "人类:"+name;
}

◆静态方法服务的面更加的广阔
◆静态方法既可以服务实例,也可以服务于其它的地方
◆实例方法只能服务于实例,没法服务更多的地方
◆静态方法通用性很强,所以一般拿来共享。
◆实例并不能直接通过 实例.静态方法来调用构造函数的静态方法,所以通常会根据静态方法再实现一个实例方法,既这也是实例方法复用静态方法。


4.常量与变量
◆常量就是不变的量,如圆周率π,js中Math.PI
◆变量就是可以变化可能会变化的量
◆在ES6之前,js并没有常量的概念,但是却融入了这种思想,约定好了,通常变量名全大写就表示常量了,类似于将构造函数首字符都大写一样,只是个约定。




5.Object.prototype 
◆Object的实例
◇ new Object
◇ {}

◆所有函数默认的原型
◇ 内置的构造函数默认的原型【
♦Function.prototype 所有的函数(内置的函数、自定义的函数)继承它
♦Array.prototype 所有的数组(new Array,[])继承它
♦Number.prototype 所有的数字对象 继承它
♦Object.prototype 这是终点,谁继承我,我看左边

◇ 自定义构造函数默认的原型【
♦Person.prototype Person所有的实例继承它
♦XXX.prototype XXX所有的实例继承它





◆Math


6.所有函数默认的原型继承自Object.prototype ,所有函数(内置的函数、自定义的函数)继承自Function.prototype 。


7.js中的显式原型和隐式原型
◆prototype 表示显式原型,同时也是构造函数的原型属性
◆__proto__ 表示隐式原型,同时也是构造函数的实例的原型对象
◆这二者并没有什么特殊的地方,仅仅只是称呼上的区分
◆原型对象:就是实例继承的那些对象。





8.原型链的长度不定,但是一定是有限的,如果是无限的,那么访问这个对象不存在的属性就会造成死循环了。


9.jQuery中的DOM操作,几乎都会涉及到遍历
◆empty:清空所有元素的内容,返回值是实例,
◆remove:删除所有的元素,返回值为实例,为了链式编程
◆html:设置所有元素的内容,获取第一个元素的内容,如果是获取则不会返回实例,如果是设置就可以返回实例
◆text:设置所有元素的文本内容,获取所有元素的文本内容,如果是获取则不会返回实例,如果是设置就可以返回实例
◆appendTo:把所有的元素,添加到指定的元素中,把自己添加到别的中,先遍历自己再遍历别的,会涉及到克隆节点
◆append:给所有的元素,添加新的内容,把别的添加到自己中,可以复用appendTo,因为原理是一样的
◆prependTo:把所有的元素,添加到指定元素中的最前面,最遍历自己然后再遍历别的,会涉及到克隆节点
◆prepend:把所有的元素的最前面,添加新的元素,可以复用prependTo







10.this和arguments
◆this是当你创建一个对象的时候,在开辟的空间里将该对象赋值给this
◆arguments是当你调用函数的时候,会将你传递进去的参数追加到一个叫做arguments的伪数组中去。


11.apply方法的原理是,先将数组参数或者伪数组参数通过调用join(,)连接起来,然后使用Function构造函数通过拼接好的字符串来创建函数对象

    //求和的方法
    function add() {
        var result = 0;
        for (var i = 0; i < arguments.length; i++) {
            result += arguments[i];
        }
        return result;


    }


    //字节写的apply方法
    function apply(fn,likeArray) {
        //注意不要写成 retrun 换行 ,这样等于 return;
        return (new Function("return "+fn.name+"(" + likeArray.join(",") + ")"))();
    }


    console.log(apply(add,[1, 2, 3, 4, 5]));//15
】。

猜你喜欢

转载自blog.csdn.net/jwllwj_2018/article/details/80621123