日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

一篇文章帶你了解JavaScript-對象

瀏覽:445日期:2022-06-08 08:30:15
目錄
  • 創建對象
    • 對象直接量
    • 通過new創建對象
    • 原型
    • Object.create()
  • 屬性的查詢和設置
    • 繼承
    • 屬性訪問錯誤
  • 刪除屬性
    • 檢測屬性
      • 序列化對象
        • 總結

          創建對象

          對象直接量

          對象直接量是由若干名/值對組成的映射表,名/值對中間用冒號分隔,名/值對之間用逗號分隔,整個映射表用花括號括起來。

          var empty = {};
          var point = { x:0, y:0};
          var point2 = {x:point.x, y:point.y+1};
          var book = {
          	"main title":"JavaScript",
          	//屬性名字里有空格,必須用字符串表示
          	"sub-title":"The",
          	//屬性名字里有連字符,必須用字符串表示
          	"for":"all",
          	//"for"是保留字,必須用字符串表示
          	author:{
          	//這個屬性的值是一個對象
          		name:"123"
          		//注意,在里的屬性名都沒有引號
          	}
          };
          

          通過new創建對象

          var o = new Object();
          //創建一個空對象,和{}一樣
          var a = new Array();
          //創建一個空數組,和[]一樣
          var d = new Date();
          //創建一個表示當前時間的Date對象
          var r = new RegExp("js");
          //創建一個可以進行匹配的RegExp對象
          

          原型

          所有通過對象直接量創建的對象都具有同一個原型對象,并可以通過JavaScript代碼Object.prototype獲得對原型對象的引用。通過關鍵字new和構造函數調用創建的對象的原型就是構造函數的prototype屬性的值。因此,同使用{}創建對象一樣,通過new Object()創建的對象也繼承自Object.prototype。同樣,通過new Array()創建的對象的原型就是Array.prototype,通過new Date()創建的對象的原型就是Date.prototype。

          沒有原型的對象為數不多,Object.prototype就是其中之一。它不繼承任何屬性。其他原型對象都是普通對象,普通對象都具有原型。所有的內置構造函數(以及大部分自定義的構造函數)都具有一個繼承自Object.prototype的原型。例如,Date.prototype的屬性繼承自Object.prototype,因此由new Date()創建的Date對象的屬性同時繼承自Date.prototype和Object.prototype。這一系列鏈接的原型對象就是所謂的“原型鏈”(prototype chain)。

          Object.create()

          創建一個新對象,其中第一個參數是這個對象的原型。Object.create()提供第二個可選參數,用以對對象的屬性進行進一步描述。

          Object.create()是一個靜態函數,而不是提供給某個對象調用的方法。使用它的方法很簡單,只須傳入所需的原型對象即可:

          var AB = Object.create({x:1,y:2});
          

          屬性的查詢和設置

          var a = book.author;
          //得到book的"author"屬性
          book.edition = 6;
          //給book創建一個名為"edition"的屬性并賦值
          book["main title"] = "123"
          //給"main title"屬性賦值
          

          繼承

          假設要查詢對象o的屬性x,如果o中不存在x,那么將會繼續在o的原型對象中查詢屬性x。如果原型對象中也沒有x,但這個原型對象也有原型,那么繼續在這個原型對象的原型上執行查詢,直到找到x或者查找到一個原型是null的對象為止。

          var o = {}
          o.x = 1;//給o定義一個屬性x
          var p = inherit(o);//p繼承o
          p.y = 2;//給p定義一個屬性y
          var q = inherit(p);//q繼承p
          q.z = 3;//給q定義一個屬性z
          q.x + q.y // 3 x和y分別繼承自o和p
          

          屬性賦值操作首先檢查原型鏈,以此判定是否允許賦值操作。如果允許屬性賦值操作,它也總是在原始對象上創建屬性或對已有的屬性賦值,而不會去修改原型鏈。

          var u = { r:1 };
          var c = inherit(u);
          c.x = 1; c.y =1;
          c.r =2;
          u.r;  // 1 原型對象沒有修改
          

          屬性訪問錯誤

          當book沒有a屬性

          book.a // undefined
          var l = book.a.length;
          //拋出一個類型錯誤異常,undefined沒有屬性
          

          刪除屬性

          delete運算符可以刪除對象的屬性。

          delete book.author;
          //book不再有屬性author
          delete book["main title"];
          //book不再有屬性"main title"
          

          delete運算符只能刪除自有屬性,不能刪除繼承屬性(要刪除繼承屬性必須從定義這個屬性的原型對象上刪除它,而且這會影響到所有繼承自這個原型的對象)。

          當delete表達式刪除成功或沒有任何副作用(比如刪除不存在的屬性)時,它返回true。如果delete后不是一個屬性訪問表達式,delete同樣返回true:

          o = {x:1};
          delete o.x; //刪除x,返回true
          delete o.x; //什么都沒做(x已經不存在了),返回true
          delete  o.toString; //什么也沒做(toString是繼承來的),返回true
          delete 1; //無意義,返回true
          

          delete不能刪除那些可配置性為false的屬性
          在這些情況下的delete操作會返回false:

          delete Object.prototype;//不能刪除,屬性是不可配置的
          var x = 1; //聲明一個全局變量
          delete this.x; //不能刪除這個屬性
          function f (){}//聲明一個全局函數
          delete this.f; //也不能刪除全局函數
          

          檢測屬性

          in運算符的左側是屬性名(字符串),右側是對象。如果對象的自有屬性或繼承屬性中包含這個屬性則返回true:

          var o = { x:1 }
          "x" in o; //true "x"是o的屬性
          "y" in o; //false "y"不是o的屬性
          "toString" in o; //true o繼承toString屬性
          

          對象的hasOwnProperty()方法用來檢測給定的名字是否是對象的自有屬性。對于繼承屬性它將返回false:

          var o = { x:1 }
          o.hasOwnProperty("x");//true o有一個自有屬性x
          o.hasOwnProperty("y");//false o中不存在屬性y
          o.hasOwnProperty("toString");//false toString是繼承屬性
          

          propertyIsEnumerable()是hasOwnProperty()的增強版,只有檢測到是自有屬性且這個屬性的可枚舉性(enumerable attribute)為true時它才返回true。

          var o = inherit({ y:2});
          o.x = 1;
          o.propertyIsEnumerable("x"); //true o有一個可枚舉的自有屬性x
          o.propertyIsEnumerable("y"); //false y是繼承來的
          Object.propertyIsEnumerable("toString"); //false 不可枚舉
          

          除了使用in運算符之外,另一種更簡便的方法是使用“!==”判斷一個屬性是否是undefined:

          var o = { x:1 }
          o.x !== undefined; //true o中有屬性x
          o.y !== undefined; //false o中沒有屬性y
          o.toString !== undefined; //true o繼承了toString屬性
          

          序列化對象

          對象序列化(serialization)是指將對象的狀態轉換為字符串,也可將字符串還原為對象。ECMAScript 5提供了內置函數JSON.stringify()和JSON.parse()用來序列化和還原JavaScript對象。這些方法都使用JSON作為數據交換格式,JSON的全稱是“JavaScript Object Notation”

          o = {x:1, y:{z:[false,null,""]}};
          s = JSON.stringify(o);
          //s是"{"x":1,"y":{"z":[false,null,""]}}"
          p = JSON.parse(s);
          // p == o
          

          總結

          本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注的更多內容!

          標簽: JSP
          相關文章:
          日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
          国产精品jk白丝蜜臀av小说| 久久精品一区| 日韩三区免费| 国产一区二区精品福利地址| 视频一区日韩| 日韩精品中文字幕吗一区二区| 亚洲小说春色综合另类电影| 久久国产精品99国产| 亚洲综合精品四区| 视频一区免费在线观看| 一本综合精品| 91亚洲精品在看在线观看高清| 日韩在线网址| 国产精品一区二区三区av| 国产精品扒开腿做爽爽爽软件| 国产剧情在线观看一区| 国产精品极品在线观看| 加勒比视频一区| 日韩久久精品网| 日韩欧美在线中字| 91久久久精品国产| 石原莉奈在线亚洲二区| 综合干狼人综合首页| 日韩福利视频网| 久久伊人久久| 神马日本精品| 男女精品网站| 91成人精品观看| 精品伊人久久久| 麻豆精品蜜桃| 午夜亚洲一区| 国产精品片aa在线观看| 久久久久久夜| 国产精品女主播一区二区三区| 欧美日韩免费观看一区=区三区 | 99精品国产一区二区三区| av亚洲在线观看| 五月亚洲婷婷 | 日韩免费av| 视频一区视频二区中文字幕| 国产日韩高清一区二区三区在线| 亚洲黄色中文字幕| 国产精品社区| 18国产精品| аⅴ资源天堂资源库在线| 欧美va亚洲va日韩∨a综合色| 亚洲乱码一区| 丁香婷婷久久| 亚洲欧美网站| 成人国产精品| 午夜在线一区| 欧美激情 亚洲a∨综合| 99久久99视频只有精品 | 性色一区二区| 美女久久精品| 午夜一区在线| 日韩av有码| 欧美 日韩 国产一区二区在线视频 | 国产成人在线中文字幕| 9色国产精品| 精品三级国产| 蜜臀va亚洲va欧美va天堂 | 国产免费av一区二区三区| 日韩在线二区| 日本a口亚洲| 欧美丝袜一区| 亚洲精品在线二区| 人在线成免费视频| 69堂免费精品视频在线播放| 国产精品88久久久久久| 国产一区一一区高清不卡| 最新日韩av| 成人三级高清视频在线看| 亚洲精品一级| 亚洲福利一区| 精品视频一区二区三区在线观看| 免播放器亚洲| 秋霞影院一区二区三区| 国产情侣久久| 老鸭窝毛片一区二区三区| 伊人久久视频| 91精品国产自产精品男人的天堂 | 午夜免费一区| 丁香婷婷久久| 国产精品亚洲一区二区在线观看| 亚洲欧美日韩精品一区二区| 日韩一区三区| 国产aⅴ精品一区二区三区久久| 色综合视频一区二区三区日韩 | 亚洲成人av观看| 国产麻豆一区| 综合视频一区| 制服诱惑一区二区| 三级小说欧洲区亚洲区| 国内揄拍国内精品久久| 国产色噜噜噜91在线精品| 狠狠干综合网| 久久精品欧美一区| caoporn视频在线| 久久精品免视看国产成人| 国产美女高潮在线观看| 免费看欧美美女黄的网站| 好看的亚洲午夜视频在线| 福利片在线一区二区| 蜜桃久久久久久久| 欧美在线资源| 成人综合一区| 性欧美69xoxoxoxo| 久久精品免费一区二区三区| 久久精品一区| 久久99蜜桃| 亚洲aⅴ网站| 一级欧美视频| 免费在线观看视频一区| 欧美国产精品| 欧美国产另类| 精品中文在线| 成人国产综合| 日本а中文在线天堂| 国产美女高潮在线| av资源亚洲| 日本久久成人网| 亚洲国产影院| 午夜久久久久| 午夜亚洲精品| 日韩美女国产精品| 日本久久一区| 国产日韩一区| 欧美激情网址| 色婷婷色综合| 中文字幕系列一区| 精品一区毛片| 亚洲免费婷婷| 日韩精品久久理论片| 亚洲三级视频| 国产日韩视频| 国产一区二区三区免费在线| 日韩综合精品| 欧美日韩日本国产亚洲在线| 亚洲欧美视频| 日韩**一区毛片| 91成人在线网站| 久久三级中文| 国产精品二区不卡| 日韩大片在线| 亚洲精品在线观看91| 天堂成人免费av电影一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩在线网址| 动漫av一区| 樱桃成人精品视频在线播放| 中文不卡在线| 久久不见久久见中文字幕免费| 国产成人久久| 美女毛片一区二区三区四区 | 老司机久久99久久精品播放免费| 涩涩涩久久久成人精品| 国产精品中文字幕亚洲欧美| 成人在线免费观看网站| 999久久久免费精品国产| 男女激情视频一区| 国产乱人伦精品一区| 午夜精品成人av| 伊人久久大香线蕉av不卡| 久久先锋影音| 国产精品极品在线观看| 999精品在线| 日韩激情av在线| 精品久久网站| 99视频一区| 免费在线日韩av| 国产精品av一区二区| 日韩精品欧美大片| 色偷偷色偷偷色偷偷在线视频| 久久亚洲色图| 成人在线免费观看网站| 日韩专区欧美专区| 久久久精品区| 午夜在线视频一区二区区别| 麻豆精品蜜桃视频网站| 激情五月色综合国产精品| 日本不卡不码高清免费观看| 在线中文字幕播放| 日韩中文字幕区一区有砖一区| 国产精品黄网站| 99精品99| 国产资源在线观看入口av| 亚洲视频国产| 欧美天堂视频| 日本aⅴ亚洲精品中文乱码| 99精品网站| 美腿丝袜亚洲一区| 亚洲一区二区毛片| 国产91在线精品| 日本在线一区二区三区| 91tv亚洲精品香蕉国产一区| 国产精品亚洲欧美日韩一区在线 | 视频一区国产视频| 在线手机中文字幕| 国产欧美日韩视频在线|