`
rainsilence
  • 浏览: 159026 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ECMAScript5 新特性(三)

阅读更多

Function 11: Date.prototype.toJSON

提供了从Date类型转成json的方法。

new Date().toJSON(); // "2010-12-06T16:25:40.040Z"
 

Function 12: Function.prototype.bind

你会发现这个函数的功能和下面的很相似

var arr1 = ['1', '2', '3'],
arr2 = ['4', '5', '6'];
// 等同于arr1.push(arr2);
Array.prototype.push.apply(arr1, arr2);
alert(arr1);

 bind和上面的不同之处在于apply是直接执行的,而bind只是绑定函数内部的this,并且将函数返回

var tooltip = { text: 'Click here to . . . ' },
overlay = { text: 'Please enter the number of attendees' };
function showText () {
     // really, do something more useful here
     alert(this.text);
}
tooltip.show = showText.bind(tooltip);
tooltip.show();
overlay.show = showText.bind(overlay);
overlay.show();
 Browser Support

○ Firefox 4

○ Internet Explorer 9

○ Chrome 7+

 

Function 13: Date.now()

大致这个函数就是等同于new Date().getTime() or +new Date,不是什么大的改动

 

Function 14: Object.getPrototypeOf

这个函数提供了从通过Object.create得到的对象中提取原型的方法,当然,如果这个对象是通过老的new

function的方法创造出来的,那也可以通过这个方法得到原型

 

var Dog = {
     name : 'dog',
     paws : 4,
     hungry : false,
     speak : function () { return 'Woof!'; }
};
var dog = Object.create(Dog);
// true
alert(Object.getPrototypeOf(dog) === Dog);
// 老方法判断
function Cat() {}
// true
alert(Object.getPrototypeOf(new Cat()) === Cat.prototype);

 

Function 15: String.prototype.trim

用来去除字符串两边的空格

var origin = " foo ";
document.write(origin.trim());

 

Function 16: Array.prototype.indexOf

这个函数用来返回查找的对象在数组中第一次出现的index

他有两个参数,第一个参数是要查找的对象,第二个参数是查找的起始位置

var array = [2, 5, 9];
var index = array.indexOf(2);
// index is 0
index = array.indexOf(7);
// index is -1
var element = 5;
var indices = [];
var idx = array.indexOf(element);
while (idx != -1) {
      indices.push(idx);
      idx = array.indexOf(element, idx + 1);
}

 当然如果浏览器没有支持indexOf,你可以用以下方法实现

if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function(searchElement /*, fromIndex */) {
            "use strict";
            if (this === void 0 || this === null)
                  throw new TypeError();
            var t = Object(this);
            var len = t.length >>> 0;
            if (len === 0)
                  return -1;
            var n = 0;
            if (arguments.length > 0) {
                  n = Number(arguments[1]);
                  if (n !== n)
                        n = 0;
                  else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
                        n = (n > 0 || -1) * Math.floor(Math.abs(n));
            }
            if (n >= len)
                  return -1;
            var k = n >= 0
                        ? n : Math.max(len - Math.abs(n), 0);
            for (; k < len; k++) {
                  if (k in t && t[k] === searchElement)
                        return k;
            }
            return -1;
      };
}
 
分享到:
评论
4 楼 rainsilence 2011-01-26  
精髓都在代码里。特别是4这篇,很多特性只需要把代码一贴,连ie6都可以用了
3 楼 iapple 2011-01-26  
贴这么多代码干嘛。难怪这么多人投新手。
2 楼 rainsilence 2011-01-24  
呵呵,其实我也正打算这么用呢
add.bind(null)(5, 6);
1 楼 花花公子 2011-01-24  
<div class="quote_title">rainsilence 写道</div>
<div class="quote_div"> bind和上面的不同之处在于apply是直接执行的,而bind只是绑定函数内部的this,并且将函数返回
<p> </p>
<pre name="code" class="js">var tooltip = { text: 'Click here to . . . ' },
overlay = { text: 'Please enter the number of attendees' };
function showText () {
     // really, do something more useful here
     alert(this.text);
}
tooltip.show = showText.bind(tooltip);
tooltip.show();
overlay.show = showText.bind(overlay);
overlay.show();</pre>
</div>
<p>我更喜欢使用bind实现curry化,比如</p>
<pre name="code" class="js">&gt; var add = function(x,y){ return x+y }
&gt; var add5 = add.bind(null, 5)
&gt; add5(1)
6
</pre>
 

相关推荐

    ECMAscript常用新特性积累1

    ECMAscript常用新特性积累1

    ECMAScript 6新特性

    本人看过《深入浅出ES6》后把一百多页去除水分,总结成十来页的文档,方便快速入门。

    ECMAScript6 新特性范例大全

    本文没有详细描述这些新特性,因为网上都已经有很多相关的介绍了。主要针对ES6 新特性收集了相关范例代码,他可以让你快速了解这个新的javascript规范

    浅谈ECMAScript6新特性之let、const

    下面小编就为大家带来一篇浅谈ECMAScript6新特性之let、const。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    ECMAScript Second Edition javascript新特性2018年7月最新版本

    ECMAScript Second Edition javascript新特性2018年7月最新版本

    JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性

    通常而言,JavaScript由ECMAScript核心、BOM和DOM三部分构成,前面的文章将ECMAScript核心部分粗略的过了一

    ECMAScript 6 入门.epub 201806

    《ECMAScript 6 入门》是一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性。 本书覆盖 ES6 与上一个版本 ES5 的所有不同之处,对涉及的语法知识给予详细介绍,并给出大量简洁易懂的示例代码...

    ECMAScript 6入门.pdf

    《ECMAScript 6入门》是一本开源的JavaScript语言教程,全面介绍ECMAScript 6新引入的语法特性。

    ECMAScript6入门.zip

    《ECMAScript 6入门》是一本开源的JavaScript语言教程,全面介绍ECMAScript 6新引入的语法特性。 本书力争覆盖ES6与ES5的所有不同之处,对涉及的语法知识给予详细介绍,并给出大量简洁易懂的示例代码。 本书为中级...

    ECMAScript6入门

    《ECMAScript6入门》全面介绍了ECMAScript6新引入的语法特性,覆盖了ECMAScript6与ECMAScript5的所有不同之处,对涉及的语法知识给予了详细介绍,并给出了大量简洁易懂的示例代码。, 《ECMAScript6入门》为中级难度...

    ES6(ECMAScript 6)新特性之模板字符串用法分析

    主要介绍了ES6(ECMAScript 6)新特性之模板字符串用法,简单介绍了ES6模板字符串的概念、功能并结合实例形式分析了ES6模板字符串的用法,需要的朋友可以参考下

    ECMAScript 6 入门.epub

    《ECMAScript 6 入门》是一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性。 本书覆盖 ES6 与上一个版本 ES5 的所有不同之处,对涉及的语法知识给予详细介绍,并给出大量简洁易懂的示例...

    ECMAScript 5严格模式(Strict Mode)介绍

    严格模式(Strict Mode)是ECMAScript 5的新特性,它允许你把整个程序,或者某个函数,放置在“严格”的操作语境中。这种严格的语境会防止某些特定的操作并抛出更多的异常。 虽然ECMAScript 5对ECMAScript 3是向下...

    ECMAScript6的新特性箭头函数(Arrow Function)详细介绍

    箭头函数是ECMAScript 6最受关注的更新内容之一。它引入了一种用「箭头」(=&gt;)来定义函数的新语法,它…它碉堡了~。箭头函数与传统的JavaScript...只能使用显式命名或其他ES6新特性来完成。这些差异的存在是有理可循的

    一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新增的语法特性

    一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新增的语法特性

    ECMAscript2018规范

    资源名称:ECMAscript2018规范内容简介:ECMAscript 2018(第九版 JS)已于 6 月底正式发布,带来了许多新特性。ECMAscript 2018 于今年2月出炉草案,TC39 技术委员会每两个月开会一次,讨论当前...

    ECMAScript 基础知识

    JavaScript的核心之一ECMAScript的语言特性和Java、C、Perl都有许多相似之处,其中不少特性都是从这些语言借鉴而来,同时它们之间也存在许多差异。下面列举一些ECMAScript的基本特性。 –和Java一样,ECMAScript区分...

Global site tag (gtag.js) - Google Analytics