【前端】牛客练题积累——JavaScript
JavaScript方面:
jquery事件响应:onfocus 获得焦点 onblur 失去焦点
Flash提供了ExternalInterface接口与JavaScript通信两个方法:call和addCallback作用:call让Flash调用js里的方法,addCallback是用来注册flash函数让js调用。
js跨域问题:只要 协议 、 域名 、 端口 有任何一个 不同, 都被当作是不同的域。
call和apply:
相同点:两个方法产生的 作用是完全一样的
不同点:方法传递的参数不同
call, apply方法它们除了第一个参数,即执行时上下文对象相同外,call方法的其它参数将依次传递给借用的方法作参数,而apply就两个参数,第二个参数为一个数组传递。
转换为false的值:false、“”(空字符串)、0和NAN、null、undefined
window.open(URL,name,features,replace) 默认打开一个新的窗口
JS禁用:Readonly只针对input(text/password)和textarea有效,而disabled对于所有的表单元素有效,包括select,radio,checkbox,button等。
setAttribute() 方法添加指定的属性,并为其赋指定的值。element.setAttribute(attributename,attributevalue)
在准备XMLHttpRequest对象时,在send()前需要调用open()
Object.keys(object)的返回值是 一个数组,其中包含对象的可枚举属性和方法的名称。
Array.filter(function)对数组进行过滤返回符合条件的数组。
Ajax的优势:1.可搜索性 2.开放性 3.费用 4.易用性 5.易于开发。Flash的优势:1.多媒体处理 2.兼容性 3.矢量图形 4.客户端资源调度Ajax的劣势:1.它可能破坏浏览器的后退功能 2.使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中 ,不过这些都有相关方法解决。Flash的劣势:1.二进制格式 2.格式私有 3.flash 文件经常会很大,用户第一次使用的时候需要忍耐较长的等待时间 4.性能问题
setTimeout(code,millisec)方法用于在指定的毫秒数后调用函数或计算表达式。code是fun()时函数会立即执行。seTimeout(fun,1000)
setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
在 JS 里,声明函数只有 2 种方法:
第 1 种: function foo(){...} (函数声明)
第 2 种: var foo = function(){...} (等号后面必须是匿名函数,这句实质是函数表达式)
除此之外,类似于 var foo = function bar(){...} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。
Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则)。
Math.max()求参数中的最大值,如果没有参数,则返回 -Infinity。如果有某个参数为 NaN,或是不能转换成数字的非数字值,则返回 NaN。
多人开发函数重名问题:
首先是通过命名规范,比如根据不同的开发人员实现的功能,在函数名加前缀,虽然函数名看起来复杂,发布的时候还是可以替换,从而优化。
还有一种办法是,每个开发人员都把自己的函数封装到类中,然后调用的时候即使函数名相同,但是因为是要类.函数名来调用,所以也减少了重复的可能性。
jQuery:
siblings() 方法返回被选元素的所有同胞元素。
next() 方法返回被选元素的下一个同胞元素。
find() 方法返回被选元素的后代元素,一路向下直到最后一个后代。
JavaScript内部对象:
Navigator:提供有关浏览器的信息Window:Window对象处于对象层次的最顶层,它提供了处理Navagator窗口的方法和属性
Location:提供了与当前打开的URL一起工作的方法和属性,是一个静态的对象
History:提供了与历史清单有关的信息
Document:包含与文档元素一起工作的对象,它将这些元素封装起来供编程人员使用
JavaScript异步编程的四种方法:
回调函数,这是异步编程最基本的方法。
事件监听,另一种思路是采用事件驱动模式。任务的执行不取决于代码的顺序,而取决于某个事件是否发生。
发布/订阅,上一节的"事件",完全可以理解成"信号"。
Promises对象,Promises 对象是CommonJS 工作组提出的一种规范,目的是为异步编程提供统一接口。
JavaScript Array 对象方法
方法 | 描述 |
---|---|
concat() | 连接两个或更多的数组,并返回结果。 |
join() | 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 |
pop() | 删除并返回数组的最后一个元素 |
push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |
reverse() | 颠倒数组中元素的顺序。 |
shift() | 删除并返回数组的第一个元素 |
slice() | 从某个已有的数组返回选定的元素 |
sort() | 对数组的元素进行排序 |
splice() | 删除元素,并向数组添加新元素。 |
toSource() | 返回该对象的源代码。 |
toString() | 把数组转换为字符串,并返回结果。 |
toLocaleString() | 把数组转换为本地数组,并返回结果。 |
unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。 |
valueOf() | 返回数组对象的原始值 |