JS部分知识点解释

js部分知识点集合

1.w3c 制定的 javascript 标准事件模型:事件捕获->事件处理->事件冒泡

2.typeof Date.now() 的值是:"number"

3.output(typeof (function() {output(“Hello World!”)})()); 输出为Hello World! undefined

4.页面有一个按钮button,id为 button1,通过原生的js如何禁用?(IE 考虑IE 8.0以上版本):

​ document.getElementById("button1").disabled = true;
​ document.getElementById("button1").setAttribute(“disabled”,”true”);

5.区别以下函数:

document.querySelector() 返回与指定的选择器组匹配的元素的后代的第一个元素;

document.querySelectorAll() 返回与指定的选择器组匹配的文档中元素列表.返回的对象是NodeList;

document.getElementById() 返回一个Element对象,表示id属性与指定字符串匹配的元素;

document.getElementsByClassName() 返回具有所有给定类名的所欲子元素的类数组对象.返回的对象是HTMLCollection;

document.getElementsByTagName() 返回具有给定标记名称的元素的HTMLCollection;

document.getElementsByName() 返回文档中具有给定名称的元素的Nodelist集合.

6.在准备XMLHttpRequest对象时,在send()前需要调用open()方法

7.javascript的描述:

​ 在原型上扩展的可枚举方法,会被for in循环出来;使用object.defineProperty可向对象添加或者修改属性;每个对象都有prototype属性,返回对象类型原型的引用;原型链是JS实现继承的一种模型;For循环是按顺序的,for in 循环是不一定按顺序的。

8.下拉菜单中,用户更改表单元素Select中的值时,就会调用onMouseOver()、onFocus()、onChange()、onClick()事件处理程序

9.运算

​ 运算中,+号,数字隐式转换成字符串。其余的运算符号是字符串隐式转换成数字。除了加法的时候数字会转换为字符串进行字符串进行拼接,其他时候字符串和数字都是字符串转换为数字进行运算.

10.运算符

​ 运算符前置和后置的区别:如果该运算符作为后置操作符,则返回它递减之前的值。如果该运算符作为前置操作符,则返回它递减之后的值。例如:temp=2;(temp--);temp先计算再自减所以表达式的值是2。

11.sort(a,b)=>Math.abs(a-3)-Math.abs(b-3)

​ 箭头函数表示:当Math.abs(a-3)>Math.abs(b-3)时,a放在b后面,Math.abs(a-3)​ sort() 方法用于对数组的元素进行排序,参数决定排序的顺序。原数组var array=[-1,1,3,4,6,10];参数(a,b)=>Math.abs(a-3)-Math.abs(b-3):即数值减3的绝对值[4,2,0,1,3,7]作为参数决定排序。根据绝对值减3大小排列[0,1,2,3,4,7],对应的原数组排序后为[3,4,1,6,-1,10]。

12.text()、:contains、:input()、attr(name,value)区别

text()是jQuery中的方法,可是设置或返回被选元素的文本内容。
:contains选择器,选取包含指定字符串的元素,字符串也可以是文本。
:input()选择器,选取表单元素。
attr(name,value)属性操作,设置或返回被选元素的属性和属性值。

13.静态语言(强类型语言)和动态语言(弱类型语言)

(1)静态语言(强类型语言)

​ 静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。
​ 例如:C++、Java、Delphi、C#等。

(2)动态语言(弱类型语言)

​ 动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
​ 例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。

14.同步模式与异步模式

(1)同步模式:就是后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的。
(2)异步模式:完全不同,每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调 函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。JavaScript中实现 异步编程模式的4种方法,回调函数、事件监听、发布/订阅、Promises对象:

    (1)回调函数:这是异步编程最基本的方法,优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护,各个部分之间高度                  耦合 (Coupling),流程会很混乱,而且每个任务只能指定一个回调函数。
              例:假定有两个函数f1和f2,后者等待前者的执行结果,如果f1是一个很耗时的任务,可以考虑改写f1,把f2写成f1的回调函
              数。
    (2)事件监听:任务的执行不取决于代码的顺序,而取决于某个事件是否发生。优点是比较容易理解,可以绑定多个事件,每个事                  件可以指定多个回调函数,而且可以”去耦合”(Decoupling),有利于实现模块化。缺点是整个程序都要变成事件驱动型,运                          行流程会变得很不清晰。
              例:为f1绑定一个事件,当f1发生done事件,就执行f2。
    (3)发布/订阅:我们假定,存在一个”信号中心”,某个任务执行完成,就向信号中心”发布”(publish)一个信号,其他任务可以向                  信号中心”订阅”(subscribe)这个信号,从而知道什么时候自己可以开始执行。这就叫做”发布/订阅模式”(publish-subscribe                   pattern),又称”观察者模式”(observer pattern)。这种方法的性质与”事件监听”类似,但是明显优于后者。因为我们可以                  通过查看”消息中心”,了解存在多少信号、每个信号 有多少订阅者,从而监控程序的运行。
    (4)Promises对象:是CommonJS工作组提出的一种规范,目的是为异步编程提供统一接口。简单说,它的思想是,每一个异步任                  务返回一个Promise对象,该对象有一个then方法,允许指定回调函数。回调函数变成了链式写法,程序的流程可以看得很清                                楚,而且有一整套的配套方法,可以实现许多强大的功能。
              例:f1的回调函数f2,f1().then(f2);

15.Math.round(x)

​ 如果参数的小数部分大于 0.5,则舍入到下一个绝对值更大的整数;
​ 如果参数的小数部分小于 0.5,则舍入到下一个绝对值更小的整数;
​ 如果参数的小数部分恰好等于0.5,则舍入到下一个在正无穷(+∞)方向上的整数。注意,与很多其他语言中的round()函数不同, Math.round()并不总是舍入到远离0的方向(尤其是在负数的小数部分恰好等于0.5的情况下)

16.angularJS

​ angularJS肯定是在DOM节点树生成后开始管理节点的,生成后寻找ng-app标记,然后其下属所有节点均由ng来管理。使用compile可以改变原始的dom,在ng创建原始dom实例以及创建scope实例之前. ng-repeat就是一个最好的例子,它就在是compile函数阶段改变原始的dom生成多个原始dom节点,然后每个又生成element实例.

17.关于Javascript中数字的部分知识总结:

1.Javascript中,由于其变量内容不同,变量被分为基本数据类型变量和引用数据类型变量。基本类型变量用八字节内存,存储基本数据类型(数值、布尔值、null和未定义)的值,引用类型变量则只保存对对象、数组和函数等引用类型的值的引用(即内存地址)

2.JS中的数字是不分类型的,也就是没有byte/int/float/double等的差异。

18.A. getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用。

​ 语法:document.getElementById(id)、参数为id值。
​ querySelector() 方法返回文档中匹配指定 CSS 选择器的一个元素。
​ 所以要获取ID为a的DOM元素,需要加上#+id名。也就是document.querySelector("#a");

19.输入验证

hover移入移出,输入验证一般不会使用。hoverkeypress也不会用作输入验证。change可以用作输入验证的事件,change(fn)只是一种实现方式,还有其他实现方式:原生js的onchange属性,html属性onchange,addEventListener(onchange,fn)都是实现方式,jquery中除了$(selector).change(fn)外还有bind(change,fn)。

你可能感兴趣的:(JS部分知识点解释)