# 數據類型
WXS 語言目前共有以下幾種數據類型:
- `number` : 數值
- `string` :字符串
- `boolean`:布爾值
- `object`:對象
- `function`:函數
- `array` : 數組
- `date`:日期
- `regexp`:正則
## number
### 語法
number 包括兩種數值:整數,小數。
```
var a = 10;
var PI = 3.141592653589793;
```
### 屬性
- `constructor`:返回字符串 `"Number"`。
### 方法
- `toString`
- `toLocaleString`
- `valueOf`
- `toFixed`
- `toExponential`
- `toPrecision`
> 以上方法的具體使用請參考 `ES5` 標準。
## string
### 語法
string 有兩種寫法:
```
'hello world';
"hello world";
```
### 屬性
- `constructor`:返回字符串 `"String"`。
- `length`
> 除constructor外屬性的具體含義請參考 `ES5` 標準。
### 方法
- `toString`
- `valueOf`
- `charAt`
- `charCodeAt`
- `concat`
- `indexOf`
- `lastIndexOf`
- `localeCompare`
- `match`
- `replace`
- `search`
- `slice`
- `split`
- `substring`
- `toLowerCase`
- `toLocaleLowerCase`
- `toUpperCase`
- `toLocaleUpperCase`
- `trim`
> 以上方法的具體使用請參考 `ES5` 標準。
## boolean
### 語法
布爾值只有兩個特定的值:`true` 和 `false`。
### 屬性
- `constructor`:返回字符串 `"Boolean"`。
### 方法
- `toString`
- `valueOf`
> 以上方法的具體使用請參考 `ES5` 標準。
## object
### 語法
object 是一種無序的鍵值對。使用方法如下所示:
```
var o = {} //生成一個新的空對象
//生成一個新的非空對象
o = {
'string' : 1, //object 的 key 可以是字符串
const_var : 2, //object 的 key 也可以是符合變量定義規則的標識符
func : {}, //object 的 value 可以是任何類型
};
//對象屬性的讀操作
console.log(1 === o['string']);
console.log(2 === o.const_var);
//對象屬性的寫操作
o['string']++;
o['string'] += 10;
o.const_var++;
o.const_var += 10;
//對象屬性的讀操作
console.log(12 === o['string']);
console.log(13 === o.const_var);
```
### 屬性
- `constructor`:返回字符串 `"Object"`。
```
console.log("Object" === {k:"1",v:"2"}.constructor)
```
### 方法
- `toString`:返回字符串 `"[object Object]"`。
## function
### 語法
function 支持以下的定義方式:
```
//方法 1
function a (x) {
return x;
}
//方法 2
var b = function (x) {
return x;
}
```
function 同時也支持以下的語法(匿名函數,閉包等):
```
var a = function (x) {
return function () { return x;}
}
var b = a(100);
console.log( 100 === b() );
```
### arguments
function 里面可以使用 `arguments` 關鍵詞。該關鍵詞目前只支持以下的屬性:
- `length`: 傳遞給函數的參數個數。
- `[index]`: 通過 `index` 下標可以遍歷傳遞給函數的每個參數。
**示例代碼:**
```
var a = function(){
console.log(3 === arguments.length);
console.log(100 === arguments[0]);
console.log(200 === arguments[1]);
console.log(300 === arguments[2]);
};
a(100,200,300);
```
### 屬性
- `constructor`:返回字符串 `"Function"`。
- `length`:返回函數的形參個數。
### 方法
- `toString`:返回字符串 `"[function Function]"`。
**示例代碼:**
```
var func = function (a,b,c) { }
console.log("Function" === func.constructor);
console.log(3 === func.length);
console.log("[function Function]" === func.toString());
```
## array
### 語法
array 支持以下的定義方式:
```
var a = []; //生成一個新的空數組
a = [1,"2",{},function(){}]; //生成一個新的非空數組,數組元素可以是任何類型
```
### 屬性
- `constructor`:返回字符串 `"Array"`。
- `length`
> 除constructor外屬性的具體含義請參考 `ES5` 標準。
### 方法
- `toString`
- `concat`
- `join`
- `pop`
- `push`
- `reverse`
- `shift`
- `slice`
- `sort`
- `splice`
- `unshift`
- `indexOf`
- `lastIndexOf`
- `every`
- `some`
- `forEach`
- `map`
- `filter`
- `reduce`
- `reduceRight`
> 以上方法的具體使用請參考 `ES5` 標準。
## date
### 語法
生成 date 對象需要使用 `getDate`函數, 返回一個當前時間的對象。
```
getDate()
getDate(milliseconds)
getDate(datestring)
getDate(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]])
```
- 參數
- `milliseconds`: 從1970年1月1日00:00:00 UTC開始計算的毫秒數
- `datestring`: 日期字符串,其格式為:"month day, year hours:minutes:seconds"
**示例代碼:**
```
var date = getDate(); //返回當前時間對象
date = getDate(1500000000000);
// Fri Jul 14 2017 10:40:00 GMT+0800 (中國標準時間)
date = getDate('2017-7-14');
// Fri Jul 14 2017 00:00:00 GMT+0800 (中國標準時間)
date = getDate(2017, 6, 14, 10, 40, 0, 0);
// Fri Jul 14 2017 10:40:00 GMT+0800 (中國標準時間)
```
### 屬性
- `constructor`:返回字符串 “Date”。
### 方法
- `toString`
- `toDateString`
- `toTimeString`
- `toLocaleString`
- `toLocaleDateString`
- `toLocaleTimeString`
- `valueOf`
- `getTime`
- `getFullYear`
- `getUTCFullYear`
- `getMonth`
- `getUTCMonth`
- `getDate`
- `getUTCDate`
- `getDay`
- `getUTCDay`
- `getHours`
- `getUTCHours`
- `getMinutes`
- `getUTCMinutes`
- `getSeconds`
- `getUTCSeconds`
- `getMilliseconds`
- `getUTCMilliseconds`
- `getTimezoneOffset`
- `setTime`
- `setMilliseconds`
- `setUTCMilliseconds`
- `setSeconds`
- `setUTCSeconds`
- `setMinutes`
- `setUTCMinutes`
- `setHours`
- `setUTCHours`
- `setDate`
- `setUTCDate`
- `setMonth`
- `setUTCMonth`
- `setFullYear`
- `setUTCFullYear`
- `toUTCString`
- `toISOString`
- `toJSON`
> 以上方法的具體使用請參考 `ES5` 標準。
## regexp
### 語法
生成 regexp 對象需要使用 `getRegExp`函數。
```
getRegExp(pattern[, flags])
```
- 參數:
- `pattern`: 正則表達式的內容。
- ```
flags
```
:修飾符。該字段只能包含以下字符:
- `g`: global
- `i`: ignoreCase
- `m`: multiline。
**示例代碼:**
```
var a = getRegExp("x", "img");
console.log("x" === a.source);
console.log(true === a.global);
console.log(true === a.ignoreCase);
console.log(true === a.multiline);
```
### 屬性
- `constructor`:返回字符串 `"RegExp"`。
- `source`
- `global`
- `ignoreCase`
- `multiline`
- `lastIndex`
> 除constructor外屬性的具體含義請參考 `ES5` 標準。
### 方法
- `exec`
- `test`
- `toString`
> 以上方法的具體使用請參考 `ES5` 標準。
## 數據類型判斷
### `constructor` 屬性
數據類型的判斷可以使用 `constructor` 屬性。
**示例代碼:**
```
var number = 10;
console.log( "Number" === number.constructor );
var string = "str";
console.log( "String" === string.constructor );
var boolean = true;
console.log( "Boolean" === boolean.constructor );
var object = {};
console.log( "Object" === object.constructor );
var func = function(){};
console.log( "Function" === func.constructor );
var array = [];
console.log( "Array" === array.constructor );
var date = getDate();
console.log( "Date" === date.constructor );
var regexp = getRegExp();
console.log( "RegExp" === regexp.constructor );
```
### `typeof`
使用 `typeof` 也可以區分部分數據類型。
**示例代碼:**
```
var number = 10;
var boolean = true;
var object = {};
var func = function(){};
var array = [];
var date = getDate();
var regexp = getRegExp();
console.log( 'number' === typeof number );
console.log( 'boolean' === typeof boolean );
console.log( 'object' === typeof object );
console.log( 'function' === typeof func );
console.log( 'object' === typeof array );
console.log( 'object' === typeof date );
console.log( 'object' === typeof regexp );
console.log( 'undefined' === typeof undefined );
console.log( 'object' === typeof null );
```
- 簡介
- 第一章 公眾號開發
- 使用微信JSSDK
- 接口權限配置
- 分享接口
- 隱藏按鈕項
- 微信支付
- 第二章 小程序開發
- 基礎知識
- 分包加載
- WXSS樣式表
- 配置
- app.json配置
- window
- tabBar
- page.json配置
- 邏輯層
- app.js
- 場景值
- page.js
- 初始化數據
- 生命周期函數
- 頁面相關事件處理函數
- 事件處理函數
- 頁面實例方法
- 路由
- 文件作用域
- 模塊化
- 視圖層
- 模板語法
- 列表渲染
- 條件渲染
- 模板
- 事件
- 引用
- WXS語法規范
- WXS數據類型
- WXS控制流程
- WXS基礎類庫
- 組件
- 視圖容器
- view
- scroll-view
- swiper
- movable-view
- cover-view
- 基礎組件
- icon
- text
- rich-text
- progress
- 表單組件
- button
- checkbox
- form
- input
- label
- picker
- picker-view
- radio
- slider
- switch
- textarea
- 導航組件
- navigator
- 媒體組件
- audio
- image
- video
- camera
- 地圖組件
- map
- 畫布組件
- canvas
- 開放能力
- web-view
- 自定義組件
- 組件模版和樣式
- Component
- 組件傳值
- 組件事件
- Behaviors
- 組件間關系
- 網絡請求
- wx.request
- 微信登錄
- 獲取 openid 和 unionid
- 獲取用戶信息
- 將 wx.request 封裝為 promise
- 上傳圖片接口封裝
- 數據存儲
- 存儲數據和讀取數據
- 獲取數據緩存信息
- 移除數據緩存
- 獲取用戶設置
- openSetting
- getSetting
- 第三章 小游戲開發
- 參考資料