1. 程式人生 > >js中建立UUID

js中建立UUID

</pre><pre>
function UUID(){
    this.id = this.createUUID();
}
 
// When asked what this Object is, lie and return it's value
UUID.prototype.valueOf = function(){ return this.id; };
UUID.prototype.toString = function(){ return this.id; };
 
//
// INSTANCE SPECIFIC METHODS
//
UUID.prototype.createUUID = function(){
    //
    // Loose interpretation of the specification DCE 1.1: Remote Procedure Call
    // since JavaScript doesn't allow access to internal systems, the last 48 bits 
    // of the node section is made up using a series of random numbers (6 octets long).
    //  
    var dg = new Date(1582, 10, 15, 0, 0, 0, 0);
    var dc = new Date();
    var t = dc.getTime() - dg.getTime();
    var tl = UUID.getIntegerBits(t,0,31);
    var tm = UUID.getIntegerBits(t,32,47);
    var thv = UUID.getIntegerBits(t,48,59) + '1'; // version 1, security version is 2
    var csar = UUID.getIntegerBits(UUID.rand(4095),0,7);
    var csl = UUID.getIntegerBits(UUID.rand(4095),0,7);
    // since detection of anything about the machine/browser is far to buggy, 
    // include some more random numbers here
    // if NIC or an IP can be obtained reliably, that should be put in
    // here instead.
    var n = UUID.getIntegerBits(UUID.rand(8191),0,7) + 
            UUID.getIntegerBits(UUID.rand(8191),8,15) + 
            UUID.getIntegerBits(UUID.rand(8191),0,7) + 
            UUID.getIntegerBits(UUID.rand(8191),8,15) + 
            UUID.getIntegerBits(UUID.rand(8191),0,15); // this last number is two octets long
    return tl + tm  + thv  + csar + csl + n; 
};
 
//Pull out only certain bits from a very large integer, used to get the time
//code information for the first part of a UUID. Will return zero's if there 
//aren't enough bits to shift where it needs to.
UUID.getIntegerBits = function(val,start,end){
 var base16 = UUID.returnBase(val,16);
 var quadArray = new Array();
 var quadString = '';
 var i = 0;
 for(i=0;i<base16.length;i++){
     quadArray.push(base16.substring(i,i+1));    
 }
 for(i=Math.floor(start/4);i<=Math.floor(end/4);i++){
     if(!quadArray[i] || quadArray[i] == '') quadString += '0';
     else quadString += quadArray[i];
 }
 return quadString;
};
 
//Replaced from the original function to leverage the built in methods in
//JavaScript. Thanks to Robert Kieffer for pointing this one out
UUID.returnBase = function(number, base){
 return (number).toString(base).toUpperCase();
};
 
//pick a random number within a range of numbers
//int b rand(int a); where 0 <= b <= a
UUID.rand = function(max){
 return Math.floor(Math.random() * (max + 1));
};

將以上js放入獨立的js檔案,檔名可以為UUID.js,

呼叫UUID.prototype.createUUID ();該方法將會返回一個32位的UUID值

相關推薦

js建立UUID

</pre><pre>function UUID(){ this.id = this.createUUID(); } // When asked what this Object is, lie and return it's value

學習:JS建立自己的物件和在定義包含方法

1.建立自己的物件 要建立自己的物件例項,必須首先為其定義一個建構函式。建構函式建立一個新物件,賦予物件屬性,並在合適的時候賦予物件方法 // people 是有3個引數的構造器 function people(name, age, sex){ // 屬性:姓名

js建立物件的5種方法

1、原始模式 var dog = { name: jack, length: 70, wang:function(){ console.log(this.name); } 2、工廠模式(批量) function creatdog

js建立桌面網頁快捷方式程式碼

   有些時候,我們編寫軟體需要建立桌面的快捷方式,有很多種方式實現,這裡有我測試過已經實現的js程式碼,程式碼如下: function toDesktop(sUrl, sName) {                 try {                     v

js建立、新增、刪除、移動、複製和查詢(子)節點

1)建立新節點createDocumentFragment() //建立一個DOM片段createElement_x() //建立一個具體的元素createTextNode() //建立一個文字節點2)新增、移除、替換、插入appendChild() //新增removeC

js生成uuid的程式碼實現,可以配合圖片驗證碼的校驗

generate_uuid:function () { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 36

js建立物件的幾種方式

前言 不管是哪門語言,千變萬化不離其宗,深入理解其本質,方能應用自如。對應到js,閉包,原型,函式,物件等是需要花費大功夫思考、理解的。本文穿插了js原型和函式的相關知識,討論了批量建立物件的幾種方式以及它們的優缺點。 正文 說起建立物件,最容易想

node.js 的package.json檔案和node_modules的怎麼建立

轉自:https://www.cnblogs.com/xilego/p/6906601.html package.json檔案可以手工編寫,也可以使用npm init命令自動生成。 $ npm init 這個命令採用互動方式,要求使用者回答一些問題,然後在當前目錄生成一個基本的pack

js函式物件建立的總結

在JavaScript的函式物件建立方法中,可以分為三種情況: 1:第一種是使用function語句定義函式 1 <script type="text/javascript"> 2 function fun1(){ 3 alert("我的第一個方法"); 4 } 5

1.JS 格式化日期 2.JS使用new Date(str)建立時間物件不相容firefox和ie的解決方式

將 2018-11-08 17:51:51 轉化為 2018年11月08日 或者其他格式.. //時間格式化 function time_format (time, format){ con

js陣列的建立和刪除

1、建立陣列  var array = new Array();  var array = new Array(size); //指定陣列的長度  var array = new Array(item1,item2……itemN); //建立陣列並賦值  2、取值、賦值  var item = array[

JS的DOM操作怎樣新增、移除、移動、複製、建立和查詢節點

  DOM操作怎樣新增、移除、移動、複製、建立和查詢節點?   (1)建立新節點 createDocumentFragment() //建立一個DOM片段 createElement()

【學習筆記】六:面向物件的程式設計——理解JS的物件屬性、建立物件、JS的繼承

  ES中沒有類的概念,這也使其物件和其他語言中的物件有所不同,ES中定義物件為:“無序屬性的集合,其屬性包含基本值、物件或者函式”。現在常用的建立單個物件的方法為物件字面量形式。在常見多個物件時,使用工程模式的一種變體。 1.理解物件   1)物件的屬性分兩種:資料屬性和訪問器屬性,每個型別的屬性都具有

js和jquery建立標籤新增屬性的方法

js方式建立標籤及新增屬性 <script>     var tr = document.getElementById('tr_id1') //根據id屬性獲取tr標籤     var t

node.js通過dgram資料報模組建立UDP伺服器和客戶端

node.js中 dgram 模組提供了udp資料包的socket實現,可以方便的建立udp伺服器和客戶端。   一、建立UDP伺服器和客戶端 服務端: const dgram = require('dgram'); //建立upd套接字 //引數一表示套接字型別,'udp4'

JS使用jquery方式建立名稱空間

    以下示例將展示建立名稱空間的高階方式 JS將擁有私有和共有屬性和方法並且可以具有類似JAVA繼承的功能Here is their example showing how to declare private & public properties and

node.js使用http模組建立伺服器和客戶端

node.js中的 http 模組提供了建立伺服器和客戶端的方法,http 全稱是超文字傳輸協議,基於 tcp 之上,屬於應用層協議。   一、建立http伺服器 const http = require('http'); //建立一個http伺服器 let server = h

js如何建立變化的陣列名,以及根據動態陣列名,查詢陣列

理論上Javascript變數宣告是在編譯階段得到的,所以無法通過宣告變數名的形式進行儲存,但是可以儲存為物件的屬性,因為可以用obj[prop]的形式宣告變數。根據動態陣列名,查詢相應陣列。比如var

h5(H5)下載功能,用JS在瀏覽器建立下載檔案

轉載:http://www.jb51.net/article/47723.htm 但受限於瀏覽器,很多情況下我們都只能給出個連結,讓使用者點選開啟-》另存為。如下面這個連結: 複製程式碼程式碼如下: <a href=”file.js”>file.js&

js日期建立

var str ='2012-08-12 23:13:15'; str = str.replace(/-/g,"/"); var date = new Date(str ); javascript Date format(js日期格式化) http://blog.csdn.