[JS] JavaScript 複製陣列

2013/05/30 發表迴響

JavaScript 裡想要複製一個陣列, 若是用ary2 = ary1 這種方式會造成修改ary2的內容時ary1的內容也會被更改, 這是因為這種方式稱為傳址呼叫, ary2 只是對應到 ary1的記憶體位置, 若是使用如 ary2 = ary1.slice() 或 ary2 = ary1.concat() 要是陣列中的值是一個object 則仍會受到影響, 這時我們可以善用prototype來賦於Array有clone()的能力, 只要在js中加入如下的程式碼即可。

Object.prototype.clone = function() {
  var newObj = (this instanceof Array) ? [] : {};
  for (i in this) {
    if (i == 'clone') continue;
    if (this[i] && typeof this[i] == "object") {
      newObj[i] = this[i].clone();
    } else newObj[i] = this[i]
  } return newObj;
};

範例:
宣告一個名為myFunction的函式如下, 當呼叫myFunction()後, 畫面上顯示為
John
J

function myFunction()
{
var a = [{'name': 'John', 'Age': 29},{'name': 'Mary', 'Age': 30}]
var b = a.clone();
b[0].name = 'J';
document.write(a[0].name + "<br>");
document.write(b[0].name);
}
類別:JavaScrpit 標籤:, ,

[JS] JavaScript CDN

2011/06/29 發表迴響

有在寫網頁的多少都聽過JavaScript Framework,像是jQuery、Prototype之類的,而要享受到這些Framework所帶來的方便,得在自己網站放上這些js檔,不過也因此會增加網站的流量,網路上就有一些提供JavaScript Libraries的CDN,可以直接在程式裡加上該網站提供的js檔的位址,例如:Google Libraries APIMicrosoft Ajax CDN 等等,就有提供各種的JavaScript Libraries,使用這些CDN的好處就是可以節省網站的流量,不過大部分只有提供一些比較受歡迎的,其他比較冷門的就沒有了,而今天要介紹另一個JavaScript Libraries CDN - cdnjs.com。這個網站提供更多的JavaScript Framework,即使網站上沒有你要的,只要上傳到該網站,通過他們的審核後就會幫你分流了。

關注

Get every new post delivered to your Inbox.