iT邦幫忙

DAY 14
5

Javascript面面觀系列 第 14

Javascript面面觀:核心篇《ECMA-262 Edition 5》(下)

廢話不多說,就繼續上回沒有介紹完的特色吧。
Scope
Scope機制有調整,現在在function裡面沒有用var宣告就使用變數時,變數不會變成Global,而是會產生錯誤。所以如果有倚賴這個過去ECMA-262 Edition 3的詭異規格的程式,恐怕需要做一些修改,否則會出問題。

Function.prototype.bind
可以讓你指定函數的context時,同時傳遞參數給它,沒傳完的參數,還可以等一下繼續傳給他執行(類似Currying)。(如果你使用google chrome,他已經偷偷在Function.prototype下面加了bind, partial, inherits, mixin四個函數,其中bind與新規格的功能差不多,可以拿來測試看看,原始碼可以在下面網址找到:http://src.chromium.org/viewvc/chrome/trunk/src/webkit/glue/devtools/js/base.js

 var a = function(obj, obj2) {
 	alert(this.name+"\n"+obj.name+"\n"+obj2.name);
 };
 var b = {
 	name: 'myname through bind'
 };
 var c = {
 	name: 'myname through bind altered'
 };
 var d = {
 	name: 'all been altered'
 };
 var e = a.bind(b,c);
 e(d);

bind()的作用,簡單地說就是在使用函數前,先bind要傳送到函數的參數。

Date
Date物件可以用Constructor解析ISO格式的日期,也可以用toISOString()方法來回傳所代表的ISO格式日期字串。

String.prototype.trim()
不用多說,大家都知道意思吧?就是去掉字串前後的空白。

Array
Array物件提供了一個isArray()函數來測試傳入的參數是否是一個Array。(有很多看起來像是Array,操作起來也很像Array,但實際上並不是Array的物件,內部是一個List,會導致使用時發生錯誤。例如函數的arguments物件就是一個例子,把他當作Array傳給Function.prototype.apply()的第二個參數就會發生錯誤)

另外有更多的新方法:

  1. Array.prototype.indexOf():傳回第一個符合條件元素的index

  2. Array.prototype.lastIndexOf():傳回最後一個符合條件元素的index

  3. Array.prototype.every ( callbackfn [ , thisArg ] ):用callbackfn函數檢查是否每個元素都符合條件,傳入元素的值當作參數

  4. Array.prototype.some ( callbackfn [ , thisArg ] ):用callbackfn函數檢查是否有元素符合條件,傳入元素的值當作參數

  5. Array.prototype.forEach ( callbackfn [ , thisArg ] ):可以代替for loop,會把元素、index、array物件本身傳入作為callbackfn函數的參數使用

  6. Array.prototype.map ( callbackfn [ , thisArg ] ):使用callbackfn對每個元素進行操作,傳入元素的值當作參數

  7. Array.prototype.filter ( callbackfn [ , thisArg ] ):使用callbackfn函數過濾元素,,傳入元素的值當作參數

  8. Array.prototype.reduce ( callbackfn [ , initialValue ] ):使用callbackfn做歸納計算,如果函數會return一個數值,則使用這個數值當作第一個參數,否則使用前一個元素做第一個參數,目前元素做第二個參數,目前元素的index做第三個參數,陣列物件本身作為第四個參數。如果指定initial值,第一次執行callbackfn時第一個參數就是這個值,否則就是第一個元素

  9. Array.prototype.reduceRight ( callbackfn [ , initialValue ] ):同前,但是從最後一個元素往前處理
    (把其他Array物件當作thisArg傳給上面用到thisArg參數的函數,就會取代Array原本使用的this而給使用傳給它的物件當作this)

部份的說明可以參考Array extras以及Working with Arrays底下列舉出的在Javascript1.6及Javascript1.8增加的操作以及範例說明。

總之
想知道更詳細的東西,還是直接看規格吧:http://www.ecmascript.org/docs/tc39-2009-043.pdf。隨然還沒正式發布,不過我想也不會大改。


上一篇
Javascript面面觀:核心篇《ECMA-262 Edition 5》(上)
下一篇
Javascript面面觀:網頁篇《瀏覽器之爭與網頁大問題》
系列文
Javascript面面觀30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言