国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript學(xué)習(xí)筆記第三天_對象

YPHP / 1171人閱讀

摘要:廖雪峰的教程學(xué)習(xí)筆記標準對象使用判斷值的類型,可以看到是類型,是類型,就是類型,另外還有一個這種基礎(chǔ)類型。小明只輸出和,并且改變了反序列化,即從字符串中還原出一個對象,使用方法就是小明小明這個感覺蠻簡單的。

廖雪峰的JavaScript教程學(xué)習(xí)筆記 1. 標準對象

使用typeof判斷值的類型,可以看到NaN是number類型,null是obejct類型,undefined 就是undefined類型,另外還有一個function這種基礎(chǔ)類型。

typeof 123; // "number"
typeof NaN; // "number"
typeof "str"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof Math.abs; // "function"
typeof null; // "object"
typeof []; // "object"
typeof {}; // "object"

JavaScript也有包裝類型,如Number,String,Boolean。但沒有Integer,因為javascript沒有int類型,所以也沒有Integer。這些類型也可以用來直接對對象進行轉(zhuǎn)換,就像是parseInt一樣。你可以使用Number來對String進行轉(zhuǎn)換,如:

var a = Number("123");

也可以使用

var b = new Number(123);

Caution:廖老師最好不要使用包裝對象,不然會有很多問題,尤其是string。

注意點

不要使用new Number()、new Boolean()、new String()創(chuàng)建包裝對象;

用parseInt()或parseFloat()來轉(zhuǎn)換任意類型到number;

用String()來轉(zhuǎn)換任意類型到string,或者直接調(diào)用某個對象的toString()方法;

通常不必把任意類型轉(zhuǎn)換為boolean再判斷,因為可以直接寫if (myVar) {...}

typeof操作符可以判斷出number、boolean、string、function和undefined

判斷Array要使用Array.isArray(arr)

判斷null請使用myVar === null

判斷某個全局變量是否存在用typeof window.myVar === "undefined"

函數(shù)內(nèi)部判斷某個變量是否存在用typeof myVar === "undefined"

其中并不是每個類型都支持直接調(diào)用某個對象的toString,比如number, null, undefined。
對function調(diào)用toString,會返回整個function的定義,如下:

var a = function(x){return 10};
a.toString();
> "function (x){return 10}"

生氣的javaScript還給number類型,添加了神奇的方式來使能toString()的直接調(diào)用,就像蝦米那這樣。

123..toString(); // "123", 注意是兩個點!
(123).toString(); // "123"

我也是醉了呀。

2. Date

這個看起來沒什么好說的額,就是Date的一些API。

var now = new Date();
now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
now.getFullYear(); // 2015, 年份
now.getMonth(); // 5, 月份,注意月份范圍是0~11,5表示六月
now.getDate(); // 24, 表示24號
now.getDay(); // 3, 表示星期三
now.getHours(); // 19, 24小時制
now.getMinutes(); // 49, 分鐘
now.getSeconds(); // 22, 秒
now.getMilliseconds(); // 875, 毫秒數(shù)
now.getTime(); // 1435146562875, 以number形式表示的時間戳

注意月份范圍是0~11,5表示六月

有兩種創(chuàng)建日期的方式,var d = new Date(2015, 5, 19, 20, 15, 30, 123);其中123是毫秒。第二種是使用ISO 8601標準方式創(chuàng)建var d = Date.parse("2015-06-24T19:49:22.875+08:00");返回時間戳,然后可以通過new Date(d);進行轉(zhuǎn)換。

Date.now()可以直接返回時間戳。

3. RegExp正則表達式

用d可以匹配一個數(shù)字,w可以匹配一個字母或數(shù)字。
.可以匹配任意字符
用*表示任意個字符(包括0個),用+表示至少一個字符,用?表示0個或1個字符,用{n}表示n個字符,用{n,m}表示n-m個字符
[]表示范圍,即匹配對象在[]范圍中。如常見的[0-9a-zA-Z_]
^表示行的開頭,^d表示必須以數(shù)字開頭。
$表示行的結(jié)束,d$表示必須以數(shù)字結(jié)束。

JavaScript中,使用/正則表達式/或者是new RegExp("正則表達式")。然后使用test("str")方法進行測試判斷,返回true/false。

var re = /^d{3}-d{3,8}$/;
var re1 = new RegExp("^d{3}-d{3,8}$}");
re.test("010-2345");
> true

切分字串"a,b;; c d".split(/[s,;]+/); // ["a", "b", "c", "d"]
用()進行提取字串,他會將()里的正則表達式匹配的字串進行分組,使用exec()方法,返回Array數(shù)組,第一個為整個字串,然后是匹配的字串,如果提取失敗返回null。

var re = /^(d{3})-(d{3,8})$/;
re.exec("010-12345"); // ["010-12345", "010", "12345"]

特性是:貪婪匹配,匹配盡可能多的字串,如下,第一個為整個字串,第二個是匹配d+, 第三個空串為匹配0*,因為字串已經(jīng)被d+匹配了,因此后者沒得匹配了。所以在寫匹配表達式是要盡可能降低匹配的長度。

var re = /^(d+)(0*)$/;
re.exec("102300"); // ["102300", "102300", ""]

全局匹配,類似搜索,需要加入標志位。/regexp/g 或者是new RegExp("regexp", g);
正則表達式還可以指定i標志,表示忽略大小寫,m標志,表示執(zhí)行多行匹配。如

var s = "JavaScript, VBScript, Fuckscript,JScript and ECMAScript";
var re = /[a-zA-z]+script/gi;

忽略大小寫匹配帶有Script的全字母字串。

最后匹配郵箱var re = /^[a-zA-Z0-9.#-]+@[a-zA-Z0-9]+.[a-zA-Z0-9]+$/;

4. JSON

JSON包含以下幾種數(shù)據(jù)類型,字符集必須是UTF-8,JSON的字符串規(guī)定必須用雙引號"",Object的鍵也必須用雙引號""。

number:和JavaScript的number完全一致;
boolean:就是JavaScript的true或false;
string:就是JavaScript的string;
null:就是JavaScript的null;
array:就是JavaScript的Array表示方式——[];
object:就是JavaScript的{ ... }表示方式。

JavaScript內(nèi)置JSON解析引擎,可直接將對象序列化為JSON字串序列。

var xiaoming = {
    name: "小明",
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    "middle-school": ""W3C" Middle School",
    skills: ["JavaScript", "Java", "Python", "Lisp"]
};
JSON.stringify(xiaoming);
// 或者使用帶縮進的顯示,最后一個參數(shù)是四空格的字串,也可以使用-等其他縮進的符號
// JSON.stringify(xiaoming, null, "   ");
// 輸出如下
{
  "name": "小明",
  "age": 14,
  "gender": true,
  "height": 1.65,
  "grade": null,
  "middle-school": ""W3C" Middle School",
  "skills": [
    "JavaScript",
    "Java",
    "Python",
    "Lisp"
  ]
}

定義

JSON.stringify(value[, replacer [, space]])

其中replacer是個可選參數(shù),它可填入以下值:

如果該參數(shù)是一個函數(shù),則在序列化過程中,被序列化的值的每個屬性都會經(jīng)過該函數(shù)的轉(zhuǎn)換和處理;

如果該參數(shù)是一個數(shù)組,則只有包含在這個數(shù)組中的屬性名才會被序列化到最終的 JSON 字符串中;

如果該參數(shù)為null或者未提供,則對象所有的屬性都會被序列化;

所以你也可以填入一個函數(shù)或者數(shù)組,進行轉(zhuǎn)換或者過濾。
如需精確控制序列化,可以在對象中自定義一個toJSON函數(shù),那么JSON.stringify(xiaoming)時會自動調(diào)用toJSON方法,沒看過源碼還不清楚怎么實現(xiàn)的,感覺應(yīng)該是看這個對象是否有hasOwnProperty(toJSON)吧,然后再判斷返回的是不是一個函數(shù),若是就調(diào)用該函數(shù)。并將結(jié)果返回。

var xiaoming = {
    name: "小明",
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    "middle-school": ""W3C" Middle School",
    skills: ["JavaScript", "Java", "Python", "Lisp"],
    toJSON: function () {
        return { // 只輸出name和age,并且改變了key:
            "Name": this.name,
            "Age": this.age
        };
    }
};

反序列化,即從JSON字符串中還原出一個對象,使用方法就是JSON.parse();

JSON.parse("[1,2,3,true]"); // [1, 2, 3, true]
JSON.parse("{"name":"小明","age":14}"); // Object {name: "小明", age: 14}
JSON.parse("true"); // true
JSON.parse("123.45"); // 123.45

這個感覺蠻簡單的。
語法:

JSON.parse(text[, reviver])

如果是一個函數(shù),在被返回之前,規(guī)定了原始值如何被解析改造。
看看MDN的對于這個函數(shù)的解釋吧,略長,我把重點加粗一下。
如果指定了 reviver 函數(shù),則解析出的 JavaScript 值(解析值)會經(jīng)過一次轉(zhuǎn)換后才將被最終返回(返回值)。更具體點講就是:解析值本身以及它所包含的所有屬性,會按照一定的順序(從最最里層的屬性開始,一級級往外,最終到達頂層,也就是解析值本身)分別的去調(diào)用 reviver 函數(shù),在調(diào)用過程中,當前屬性所屬的對象會作為 this 值當前屬性名和屬性值會分別作為第一個和第二個參數(shù)傳入 reviver 中如果 reviver 返回 undefined,則當前屬性會從所屬對象中刪除,如果返回了其他值,則返回的值會成為當前屬性新的屬性值。

當遍歷到最頂層的值(解析值)時,傳入 reviver 函數(shù)的參數(shù)會是空字符串 ""(因為此時已經(jīng)沒有真正的屬性)和當前的解析值(有可能已經(jīng)被修改過了),當前的 this 值會是 {"": 修改過的解析值},在編寫 reviver 函數(shù)時,要注意到這個特例。

按照以上解釋,我們可以嘗試返回undefined,然后刪除某個屬性。

JSON.parse("{"name":"xiaoming","age":14, "height":180}", function(k,v){
    if(typeof v === "string"){
        return undefined;
    }
    return v;
});
// 輸出,刪除了name屬性及其值。
> Object {age: 14, height: 180}

美化一下yahoo 天氣返回的JSON。
大概是這樣子的:

JSON.stringify(weather, null, "   ");
// 輸出
"{
   "query": {
      "count": 1,
      "created": "2016-12-14T12:40:29Z",
      "lang": "zh-CN",
      "results": {
         "channel": {
            "units": {
               "distance": "mi",
               "pressure": "in",
               "speed": "mph",
               "temperature": "F"
            },
            "title": "Yahoo! Weather - Beijing, Beijing, CN",
            "link": "http://us.rd.yahoo.com/dailynews/rss/weather/Country__Country/*https://weather.yahoo.com/country/state/city-2151330/",
            "description": "Yahoo! Weather for Beijing, Beijing, CN",
            "language": "en-us",
            "lastBuildDate": "Wed, 14 Dec 2016 08:40 PM CST",
            "ttl": "60",
            "location": {
               "city": "Beijing",
               "country": "China",
               "region": " Beijing"
            },
            "wind": {
               "chill": "28",
               "direction": "215",
               "speed": "11"
            },
            "atmosphere": {
               "humidity": "33",
               "pressure": "1025.0",
               "rising": "0",
               "visibility": "16.1"
            },
            "astronomy": {
               "sunrise": "7:29 am",
               "sunset": "4:50 pm"
            },
            "image": {
               "title": "Yahoo! Weather",
               "width": "142",
               "height": "18",
               "link": "http://weather.yahoo.com",
               "url": "http://l.yimg.com/a/i/brand/purplelogo//uh/us/news-wea.gif"
            },
            "item": {
               "title": "Conditions for Beijing, Beijing, CN at 07:00 PM CST",
               "lat": "39.90601",
               "long": "116.387909",
               "link": "http://us.rd.yahoo.com/dailynews/rss/weather/Country__Country/*https://weather.yahoo.com/country/state/city-2151330/",
               "pubDate": "Wed, 14 Dec 2016 07:00 PM CST",
               "condition": {
                  "code": "31",
                  "date": "Wed, 14 Dec 2016 07:00 PM CST",
                  "temp": "34",
                  "text": "Clear"
               },
               "forecast": [
                  {
                     "code": "32",
                     "date": "14 Dec 2016",
                     "day": "Wed",
                     "high": "36",
                     "low": "21",
                     "text": "Sunny"
                  },
                  {
                     "code": "32",
                     "date": "15 Dec 2016",
                     "day": "Thu",
                     "high": "42",
                     "low": "21",
                     "text": "Sunny"
                  },
                  {
                     "code": "30",
                     "date": "16 Dec 2016",
                     "day": "Fri",
                     "high": "40",
                     "low": "21",
                     "text": "Partly Cloudy"
                  },
                  {
                     "code": "30",
                     "date": "17 Dec 2016",
                     "day": "Sat",
                     "high": "44",
                     "low": "21",
                     "text": "Partly Cloudy"
                  },
                  {
                     "code": "34",
                     "date": "18 Dec 2016",
                     "day": "Sun",
                     "high": "44",
                     "low": "24",
                     "text": "Mostly Sunny"
                  },
                  {
                     "code": "32",
                     "date": "19 Dec 2016",
                     "day": "Mon",
                     "high": "46",
                     "low": "25",
                     "text": "Sunny"
                  },
                  {
                     "code": "30",
                     "date": "20 Dec 2016",
                     "day": "Tue",
                     "high": "47",
                     "low": "29",
                     "text": "Partly Cloudy"
                  },
                  {
                     "code": "30",
                     "date": "21 Dec 2016",
                     "day": "Wed",
                     "high": "45",
                     "low": "29",
                     "text": "Partly Cloudy"
                  },
                  {
                     "code": "30",
                     "date": "22 Dec 2016",
                     "day": "Thu",
                     "high": "41",
                     "low": "28",
                     "text": "Partly Cloudy"
                  },
                  {
                     "code": "30",
                     "date": "23 Dec 2016",
                     "day": "Fri",
                     "high": "38",
                     "low": "24",
                     "text": "Partly Cloudy"
                  }
               ],
               "description": "
Current Conditions:

Clear

Forecast:
Wed - Sunny. High: 36Low: 21
Thu - Sunny. High: 42Low: 21
Fri - Partly Cloudy. High: 40Low: 21
Sat - Partly Cloudy. High: 44Low: 21
Sun - Mostly Sunny. High: 44Low: 24

Full Forecast at Yahoo! Weather

(provided by The Weather Channel)
]]>", "guid": { "isPermaLink": "false" } } } } } }"

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91346.html

相關(guān)文章

  • 26天學(xué)通前端開發(fā)(配資料)

    摘要:網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知識點羅列為主或是資料的匯總,數(shù)據(jù)量讓新人望而卻步。天了解一個前端框架。也可以關(guān)注微信公眾號曉舟報告,發(fā)送獲取資料,就能收到下載密碼,網(wǎng)盤地址在最下方,獲取教程和案例的資料。 前言 好的學(xué)習(xí)方法可以事半功倍,好的學(xué)習(xí)路徑可以指明前進方向。這篇文章不僅要寫學(xué)習(xí)路徑,還要寫學(xué)習(xí)方法,還要發(fā)資料,干貨滿滿,準備接招。 網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知...

    blair 評論0 收藏0
  • q'qJavaScript學(xué)習(xí)三天筆記(語句)

    摘要:循環(huán)語句循環(huán)語句是什么循環(huán)語句是一系列反復(fù)執(zhí)行到符合特定條件的語句。示例代碼如下跳轉(zhuǎn)語句什么是跳轉(zhuǎn)語句跳轉(zhuǎn)語句就是使得代碼的執(zhí)行可以從一個位置到另一個位置,跳轉(zhuǎn)語句包括和兩種。 語句 語句 語句的概述 1.描述:在JavaScript中,語句使用分號(;)進行分隔。可以在每行編寫一條語句,也可以在每行編寫多 條語句(建議每行只編寫一條語句)。JavaScript解釋器按照語句...

    chenjiang3 評論0 收藏0
  • 2017-10-26 前端日報

    摘要:前端日報精選淺談前端和移動端的事件機制字符串轉(zhuǎn)數(shù)字陷阱前端魔法堂調(diào)用棧,異常實例中的寶藏一份完美的前端清單專為現(xiàn)代網(wǎng)站和極致的開發(fā)者打造居中辦法學(xué)習(xí)筆記中文開發(fā)如何在里面優(yōu)雅的解決跨域,路由沖突問題超詳細前端學(xué)習(xí)譯響應(yīng)式腦電波如何使 2017-10-26 前端日報 精選 淺談前端和移動端的事件機制JavaScript 字符串轉(zhuǎn)數(shù)字:陷阱前端魔法堂——調(diào)用棧,異常實例中的寶藏一份完美的前...

    jindong 評論0 收藏0
  • 三天

    摘要:今天遇到了什么問題在想填代碼的時候挺尷尬的,需求會翻譯但是代碼本身沒辦法翻譯的,有點難對應(yīng)上。今天學(xué)了什么相關(guān)知識,又是看為主的一天。因為在上敲過一點,所以看得比較快,權(quán)當復(fù)習(xí)。引一個筆記第三天 2019.3.8 用時:兩小時。 今天遇到了什么問題? 在MDN想填代碼的時候挺尷尬的,需求會翻譯但是代碼本身沒辦法翻譯的,有點難對應(yīng)上。 今天學(xué)了什么? CSS相關(guān)知識,又是看為主的一天。因...

    NotFound 評論0 收藏0
  • 三天

    摘要:今天遇到了什么問題在想填代碼的時候挺尷尬的,需求會翻譯但是代碼本身沒辦法翻譯的,有點難對應(yīng)上。今天學(xué)了什么相關(guān)知識,又是看為主的一天。因為在上敲過一點,所以看得比較快,權(quán)當復(fù)習(xí)。引一個筆記第三天 2019.3.8 用時:兩小時。 今天遇到了什么問題? 在MDN想填代碼的時候挺尷尬的,需求會翻譯但是代碼本身沒辦法翻譯的,有點難對應(yīng)上。 今天學(xué)了什么? CSS相關(guān)知識,又是看為主的一天。因...

    yuanxin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<