Welcome 微信登录

首页 / 脚本样式 / JavaScript

Array.prototype.concat不是通用方法反驳[译]

Array.prototype.concat不是通用方法反驳[译]

ECMAScript 5.1规范§15.4.4.4 中说到:复制代码 代码如下: concat函数是有意设计成通用的;它并不要求它的this值必须得是个Array对象.因此,它可以被转移到其它类型的对象上作为方法来调用. 本文中的代码都使用了[]来作为Array.prototype的快捷方式.这已经是很常用的技巧了,虽然可读性差点:你通过一个对象实例访问到了Array.prototype上的方法.但是,这样的访问方式在现代的JavaScript引擎中非常之...
JavaScript 反科里化 this [译]

JavaScript 反科里化 this [译]

本文主要讲了JavaScript中科里化和反科里化this的方法.话题来自于Brendan Eich(JavaScript之父)的一个tweet.1.反科里化(Uncurrying)this 反科里化this的意思是:把一个签名如下的方法: obj.foo(arg1, arg2)转换成另外一个签名如下的函数: foo(obj, arg1, arg2)想要知道这么做有什么用,我们首先得了解一下通用方法. 2.通用方法(Generic methods) 通常情...
JavaScript 更严格的相等 [译]

JavaScript 更严格的相等 [译]

1.检测NaN 在数学上,任意值x总是与自己相等: x = x 但这条规则并不适用于 === 和 NaN: 复制代码 代码如下: > NaN === NaN false 导致的结果就是,你不能通过使用indexOf方法在一个包含了NaN的数组中找到这个NaN,因为该方法在内部是使用了===来判断一个元素是否和参数中指定的值相等的: 复制代码 代码如下: > [ NaN ].indexOf(NaN) -1 译者注:switch语句同理 复制代...
js DOM 元素ID就是全局变量

js DOM 元素ID就是全局变量

标准规范 HTML5规范文档中指出:如果一个元素符合下面两条规则中的任一条,则window对象中必须要有与之对应的一个属性,属性值就是这个对象.如果一个元素拥有ID属性,那么ID属性的属性值就会成为window对象的属性名.如果一个元素拥有name属性,那么name属性的属性值就会成为window对象的属性名.但这个元素的标签名必须是: a, applet, area, embed, form, frame, frameset, iframe, img, ...
使用apply方法处理数组的三个技巧[译]

使用apply方法处理数组的三个技巧[译]

apply方法 apply是所有函数都有的方法.它的签名如下: func.apply(thisValue, [arg1, arg2, ...]) 如果不考虑thisValue的影响,上面的调用等同于: func(arg1, arg2, ...) 也就是说,apply允许我们将一个数组"解开"成为一个个的参数再传递给调用函数.让我们分别看看apply使用中的三个技巧. 技巧1: 将一个数组传递给一个不接受数组作为参数的函数 JavaScript中没有返回一个...
JavaScript中将一个值转换为字符串的方法分析[译]

JavaScript中将一个值转换为字符串的方法分析[译]

译者注:前两天在看ES5的时候顺便出了一道题,今天看到这篇文章,刚好解释的很清楚,就翻译了一下.在JavaScript中,主要有三种方法能让任意值转换为字符串.本文讲解了每种方法以及各自的优缺点.1.转换字符串的三种方法 这三种将value转换为字符串的方法是: 1.value.toString() 2."" + value 3.String(value) 第一种方法存在的问题是,它不能把null和undefined转换为字符串.还有第二种和第三种方法,这...
JavaScript 参数中的数组展开 [译]

JavaScript 参数中的数组展开 [译]

译者注:本文要讲的是ECMAScript 6中的知识点,如果你连ES5都不了解的话.我得说,你已经很落后了.CSS4,HTML6,甚至ES7 ES8都已经开始规划了,赶紧形动起来吧,否则淘汰!有些时候,我们需要把一个数组展开成多个元素,然后把这些元素作为函数调用的参数.JavaScript中可以使用Function.prototype.apply来实现这种展开操作,但它不能被应用在执行构造函数的情况下.本文解释了什么是展开操作以及如何在使用new运算符的同...
JavaScript快速检测浏览器对CSS3特性的支持情况

JavaScript快速检测浏览器对CSS3特性的支持情况

在项目中需要快速检测浏览器是否支持某CSS3特性,比如检测是否支持“transform”,然后我的布局会有两种完全不同的版式。当然除开本文介绍的这种快速方法,还有一种更有名和更通用的方法,那就是modernizr,运行脚本之后它会在html的class上加上浏览器支持的所有特性的列表。优点:js是可配置的,不需要的特性检测可以在配置脚本中去掉基于特性检测js库简单好用除此之外还有一种不太好的方法,那就是判断浏览器的UA,不好的原因是UA可能会伪造,而且版本...
JavaScript模板入门介绍

JavaScript模板入门介绍

比如要在一个列表中利用ajax插入一个li的时候,我会直接把数据跟html标签拼接成一句完整的html,然后插入到ul中。无论数据是从服务器端拿回的,或者是从用户的input输入中拿到的——无论哪种方法都是一样。 这个拼接过程放在JavaScript文件中,显得非常不优雅。如果还把style也放在JavaScript中,那数据、结构还有样式整个就是一锅粥了,要维护这样的代码会让人想自杀。最过分的就是把页面上最终要生成的HTML都直接放在服务器端,ajax吐...
实现网页内容水平或垂直滚动的Javascript代码

实现网页内容水平或垂直滚动的Javascript代码

主要两个部分,一、是滚动内容部分;二、JS的滚动代码部分,也只有两句话。 一、传统的滚动代码 用Javascript实现新闻内容的水平滚动! [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 传统的滚动代码应用效果比较单一,而且经常还存在浏览器的兼容性问题,比如在FIREFOX上效果就会出现marquee的特效无效的问题。 二、Javascript实现的滚动效果 用Javascript实现新闻内容的水平滚动1 document.writ...
<< 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 >>