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

資訊專(zhuān)欄INFORMATION COLUMN

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

YPHP / 1165人閱讀

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

廖雪峰的JavaScript教程學(xué)習(xí)筆記 1. 標(biāo)準(zhǔn)對(duì)象

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

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也有包裝類(lèi)型,如Number,String,Boolean。但沒(méi)有Integer,因?yàn)閖avascript沒(méi)有int類(lèi)型,所以也沒(méi)有Integer。這些類(lèi)型也可以用來(lái)直接對(duì)對(duì)象進(jìn)行轉(zhuǎn)換,就像是parseInt一樣。你可以使用Number來(lái)對(duì)String進(jìn)行轉(zhuǎn)換,如:

var a = Number("123");

也可以使用

var b = new Number(123);

Caution:廖老師最好不要使用包裝對(duì)象,不然會(huì)有很多問(wèn)題,尤其是string。

注意點(diǎn)

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

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

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

通常不必把任意類(lèi)型轉(zhuǎn)換為boolean再判斷,因?yàn)榭梢灾苯訉?xiě)if (myVar) {...}

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

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

判斷null請(qǐng)使用myVar === null

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

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

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

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

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

123..toString(); // "123", 注意是兩個(gè)點(diǎn)!
(123).toString(); // "123"

我也是醉了呀。

2. Date

這個(gè)看起來(lái)沒(méi)什么好說(shuō)的額,就是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號(hào)
now.getDay(); // 3, 表示星期三
now.getHours(); // 19, 24小時(shí)制
now.getMinutes(); // 49, 分鐘
now.getSeconds(); // 22, 秒
now.getMilliseconds(); // 875, 毫秒數(shù)
now.getTime(); // 1435146562875, 以number形式表示的時(shí)間戳

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

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

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

3. RegExp正則表達(dá)式

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

JavaScript中,使用/正則表達(dá)式/或者是new RegExp("正則表達(dá)式")。然后使用test("str")方法進(jìn)行測(cè)試判斷,返回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"]
用()進(jìn)行提取字串,他會(huì)將()里的正則表達(dá)式匹配的字串進(jìn)行分組,使用exec()方法,返回Array數(shù)組,第一個(gè)為整個(gè)字串,然后是匹配的字串,如果提取失敗返回null。

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

特性是:貪婪匹配,匹配盡可能多的字串,如下,第一個(gè)為整個(gè)字串,第二個(gè)是匹配d+, 第三個(gè)空串為匹配0*,因?yàn)樽执呀?jīng)被d+匹配了,因此后者沒(méi)得匹配了。所以在寫(xiě)匹配表達(dá)式是要盡可能降低匹配的長(zhǎng)度。

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

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

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

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

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

4. JSON

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

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

JavaScript內(nèi)置JSON解析引擎,可直接將對(duì)象序列化為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);
// 或者使用帶縮進(jìn)的顯示,最后一個(gè)參數(shù)是四空格的字串,也可以使用-等其他縮進(jìn)的符號(hào)
// 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是個(gè)可選參數(shù),它可填入以下值:

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

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

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

所以你也可以填入一個(gè)函數(shù)或者數(shù)組,進(jìn)行轉(zhuǎn)換或者過(guò)濾。
如需精確控制序列化,可以在對(duì)象中自定義一個(gè)toJSON函數(shù),那么JSON.stringify(xiaoming)時(shí)會(huì)自動(dòng)調(diào)用toJSON方法,沒(méi)看過(guò)源碼還不清楚怎么實(shí)現(xiàn)的,感覺(jué)應(yīng)該是看這個(gè)對(duì)象是否有hasOwnProperty(toJSON)吧,然后再判斷返回的是不是一個(gè)函數(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字符串中還原出一個(gè)對(duì)象,使用方法就是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

這個(gè)感覺(jué)蠻簡(jiǎn)單的。
語(yǔ)法:

JSON.parse(text[, reviver])

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

當(dāng)遍歷到最頂層的值(解析值)時(shí),傳入 reviver 函數(shù)的參數(shù)會(huì)是空字符串 ""(因?yàn)榇藭r(shí)已經(jīng)沒(méi)有真正的屬性)和當(dāng)前的解析值(有可能已經(jīng)被修改過(guò)了),當(dāng)前的 this 值會(huì)是 {"": 修改過(guò)的解析值},在編寫(xiě) reviver 函數(shù)時(shí),要注意到這個(gè)特例。

按照以上解釋?zhuān)覀兛梢試L試返回undefined,然后刪除某個(gè)屬性。

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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

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

相關(guān)文章

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

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

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

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

    chenjiang3 評(píng)論0 收藏0
  • 2017-10-26 前端日?qǐng)?bào)

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

    jindong 評(píng)論0 收藏0
  • 三天

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

    NotFound 評(píng)論0 收藏0
  • 三天

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

    yuanxin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<