js相关笔记(七)

1.当你没有精神的时候,我嘲笑你,你心里一毛,嘿,立马就精神了。


2.匿名函数,是没有名字的函数,存在方式有三种,不允许直接定义,会报错
◆存在方式一:定义完直接调用(function(){console.log(1);})();
◆存在方式二:绑定事件 document.onclick=function(){console.log(1);}
◆存在方式三:绑定定时器 setInterval(function(){console.log(1);},1000);
☆有名字的函数中有一种方式 var fn=function(){console.log(1);},虽然用了匿名函数,但是这个函数还是有名字的,所以不算是匿名函数。


3.函数绑定定时器的方式有三种
◆ setInterval(function(){console.log(1);},1000); 直接编写匿名函数的方式
◆ setInterval(fn,1000); 直接编写函数名的方式
◆  setInterval("fn()",1000);直接编写调用函数时的字符串的方式


4.函数的数据类型就是function,并且函数名就代表了整个函数,但是它归根结底还是object。


5.递归的实质就是函数自己调用自己,也是一种思想,递归必须要有跳出的条件,否则就会是死循环。


6.函数自己调用自己就叫递归,函数调用别的函数就叫回调,函数作为参数进行传递和使用就叫回调函数,回调函数一般是用于定义一个规则或则一个行为来使用的,传递规则或者行为时通过函数来传递,通过传递规则或行为从而达到目的时必须使用回掉函数,因为这样做更加的灵活。


7.对象与一类事物的区别,一类事物的抽象的,一个对象是具体的,也具有唯一性,举例
◆生活中的衣服就是一类事物是抽象,但是我身上穿的衣服,就是对象,是具体的。
◆游戏中的装备武器饰品就是一类事物是抽象的,但是我游戏中的角色身上穿的装备武器饰品就是对象,是具体的。


8.javascript 是基于对象,面向对象是可以自定义类型, 可以支持继承、 封装、  多态,而基于对象, 不能自定义类型, 只能模拟定义类型, 不能够很好的支持 和继承和多态。


9.通过构造函数模拟定义类型之后或者模拟创建对象,如果要在该对象的行为中使用该对象的成员,那么就需要使用this关键字来调用自己的成员,不能直接用成员名称来调用。


10.面向对象分为两种 
★广义的面向对象指的是 让你的程序更加简便,所有的功能封装成一些函数封装到对象里面,要用的时候就调用对象里面的方法。
★狭义的面向对象是指 简单的封装一个一个的小对象,传递数据就使用这些小对象来做即可。


11.this关键字,this只会出现在函数中,谁调用这个函数,那么this指的就是谁,就会指向谁的内存地址。


12.new关键字,new关键字用于创建对象
◆先在内存中开辟空间,然后存储你创建的这个对象
◆在这个对象里面首先把this设置成当前对象
◆然后执行内部的代码,设置对象的属性和方法
◆返回新创建的对象(实际返回的是这个对象在内存中的地址)
★引用类型传递, 引用即内存地址 ,值类型传递值。


13.在javascript中没有类的概念,只有构造函数的概念,使用new关键字配合构造函数可以创建对象,构造函数也是一种函数,所以在不配合new关键字的情况下也可以当作普通函数来使用。


14.在javascript中没有函数的重载,也没有构造函数的重载。


15.在构造函数中直接定义一个函数,那么这个函数是一个局部函数,这个函数会被提升到构造函数的最上面,而不会是构造函数的外面。


16.通过构造函数创建的对象,使用typeof后返回值是object,于是就说明了,javascript中无法自定义类型,只能通过模拟来定义类型,然后通过new关键字与构造函数的配合,来创建你模拟定义的类型的对象,不能很好的支持继承和多态。


17.var stu=new Object();给对象在外边绑定属性的方式有两种,同时也能使用这两种方式来获取对象的属性的值。
◆stu.name="flag";通过.的方式给对象绑定属性
◆stu["name"]="flag";通过[""]的方式给对象绑定属性
★使用.的方式都可以适用[""]的方式实现,但是使用[""]的方式不一定能够适用.的方式实现,例如stu[0]="你好",但是不是使用stu.0="你好",因为从语法上就会在预解析的时候直接报错。


18.使用parseInt(value,radix)和value.toString(radix)可以是实现进制之间相互转换
◆parseInt表示将value以radix进制的方式转换为十进制的整数
◇例如:parseInt(11,2);返回十进制的3,因为2进制的11就是10进制的3
◆toString表示将value以十进制的方式转换为radix进制的数字
◇例如:11.toString(2);返回的是二进制的1011,因为10进制的11就是2进制的1011
★ 进制最高为36进制  如果无法进行转换 则会返回NaN 表示无法进行运算
★注意进制转换不要带小数,因为可能会出现精度丢失导致转换出现失误
posted @ 2018-06-10 18:05  我叫贾文利  阅读(116)  评论(0编辑  收藏  举报