亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript類型系統之Object詳解

2019-11-20 10:50:42
字體:
來源:轉載
供稿:網友

前面的話

  在javascript中,對象為王;Javascript里的幾乎所有東西都是對象或者用起來像對象。理解了對象,就理解了Javascript。在javascript中,引用類型是一種數據結構,用于將數據和功能組織在一起,它也常被稱為類。引用類型有時也被稱為對象定義,因為它們描述的是一類對象所具有的屬性和方法

  大部分引用類型的值都是Object類型的實例;而且,Object也是javascript中使用最多的一個類型。雖然Object實例不具備多少功能,但對于在應用程序中存儲和傳輸數據,它們確實是非常理想的選擇

創建對象

  有兩種Object類型的創建方法

[1]Object構造函數

var person = new Object();//如果不給構造函數傳遞參數可以不加括號 var person = new Object;person.name = 'bai';person.age = 29; //創建無屬性的空對象var cody1 = new Object();var cody2 = new Object(undefined);var cody3 = new Object(null);console.log(typeof cody1,typeof cody2, typeof cody3);//object object object //創建string、number、array、function、boolean、regexconsole.log(new Object('foo'));console.log(new Object(1));console.log(new Object([]));console.log(new Object(function(){}));console.log(new Object(true));console.log(new Object(//bbt[a-z]+/b/));

  [注意]Object()構造函數本身就是對象,構造函數是基于Function構造函數創建的對象

[2]使用對象字面量

  Javascript提供了叫做字面量的快捷方式,用于創建大多數原生對象值。使用字面量只是隱藏了與使用new 操作符相同的

基本過程

var person = {name : 'bai',age : 29,5 : true};

  [注意]在對象字面量中使用逗號來分隔不同的屬性,但是在最后一個屬性后面添加逗號,會在IE7-導致錯誤

  使用對象字面量的方法來定義對象,屬性名會自動轉換成字符串

//同上var person = {'name' : 'bai','age' : 29,'5' : true};

  如果留空其花括號,則可以定義只包含默認屬性和方法的對象

//等價于var person = new Object();var person = {}; [tips]使用對象字面量封裝多個可選參數function displayInfo(args){var output = '';if(typeof args.name == 'string'){output += 'name:' + args.name +'/n';}if(typeof args.age == 'number'){output += 'Age:' + args.age + '/n';}console.log(output);};displayInfo({name: 'Nicholas',age: 29});displayInfo({name: 'match'});

  以上這種傳遞參數的模式最適合需要向函數傳入大量可選參數的情況。一般來說,雖然命名參數容易處理,但有多個可選參數時就會不夠靈活。因此,對于必須值使用形參,而使用對象字面量來封裝多個可選參數

設置對象

  有兩種訪問對象屬性的方法,可以用點表示法或中括號表示法獲取、設置或更新對象的屬性

  中括號法的兩個優點分別是可以通過變量來訪問屬性、屬性名稱可以為Javascript無效標識符

    [注意]變量中可以存在中文,因為中文相當于字符,與英文字符同樣對待,因此可以寫成person.白或person['白']

var myObject = {123:'zero',class:'foo'};console.log(myObject['123'],myObject['class']);//'zero' 'foo'console.log(myObject.123);//報錯

  方括號中的值若是非字符串類型會使用String()隱式轉換成字符串再輸出;如果是字符串類型,若有引號則原值輸出,否則會被識別為變量,若變量未定義,則報錯

person[0] = 1; //[]中的數字不會報錯,而是自動轉換成字符串person[a] = 1; //[]中符合變量命名規則的元素會被當成變量,變量未被定義,而報錯person[''] = 2; //[]中的空字符串不會報錯,是實際存在的且可以調用,但不會在控制臺右側的集合中顯示person[undefined 或 null 或 true 或 false] = 4;// 不會報錯,而是自動轉換成字符串person['白'] = 6; // 不會報錯 

刪除對象

  delete操作符可以用于將屬性從一個對象中完全刪除。delete是將屬性從一個對象中刪除的唯一辦法,將屬性設置為undefined或null只能改變屬性的值,而不會將屬性從對象中刪除。delete只能刪除對象下的數據,其他5種基礎類型的值是刪除不掉的

  [注意]delete不會刪除在原型鏈上找到的屬性

var foo = {bar: 'bar'};delete foo.bar;console.log('bar' in foo);//false var a = 123;delete a;console.log(a);//123

  如果在全局狀態下聲明變量a,相當于window對象下的一個數據a,可以通過window.a或a來對a賦值,且window.a和a的值總是相等,但就是無法刪除

var a;a = 10;console.log(a,window.a);//10 10window.a = 20;console.log(a,window.a);//20 20delete a ;console.log(a,window.a);//20 20delete window.a;console.log(a,window.a);//20 20

  如果用window.b 來聲明并賦值(b相當于聲明在window對象下),可以刪除,且用delete b 和 delete window.b 的效果相同,刪除后,console.log(b)提示變量不存在,console.log(window.b)提示undefined

window.b = 10;console.log(b,window.b);//10 10delete b;console.log(b);//報錯console.log(window.b);//undefined window.b = 10;console.log(b,window.b);//10 10delete window.b;console.log(b);//報錯console.log(window.b);//undefined 

對象嵌套

  對象可以嵌套,但必須逐層取值

var student = {name : {chinese : 1,englisth : 2},sex : 1,age : 26}

  [注意]取值只能一層一層取,如student.name.chinese,而不能跨過name,直接用student.chinese,因為與name的同級下也可能有叫chinese的元素

var object1 = {object1_1:{object1_1_1:{foo: 'bar'},object1_1_2:{}},object1_2:{object1_2_1:{},object1_2_2:{}}};console.log(object1.object1_1.object1_1_1.foo);//bar

實例方法

  constructor:保存著用于創建當前對象的函數
  hasOwnProperty(propertyName):用于檢查給定的屬性在當前對象實例中(而不是在實例的原型中)是否存在。其中,propertyName必須以字符串形式指定

  isPrototypeOf(object):用于檢查傳入的對象是否是傳入對象的原型

  propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語句來枚舉。其中,propertyName必須以字符串形式指定

  toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應

  toString():返回對象的字符串表示

  valueOf():返回對象的字符串、數值或布爾值表示,通常與toString()方法的返回值相同

var myObject = {mark: true};console.log(myObject.constructor);//function Object(){}console.log(myObject.hasOwnProperty('mark'));//trueconsole.log(Object.prototype.isPrototypeOf(myObject));//trueconsole.log(myObject.propertyIsEnumerable('mark'));//trueconsole.log(myObject.toLocaleString());//[object Object]console.log(myObject.toString());//[object Object]console.log(typeof myObject.valueOf(),myObject.valueOf());// object Object{mark:true}

小結:

Object類型

  對象其實就是一組數據和功能的集合。對象可以通過執行new操作符后跟要創建的對象類型的名稱來創建。而創建Object類型的實例并為其添加屬性和(或)方法,就可以創建自定義對象。

var o = new Object(); 

  Object的每個實例都具有下列屬性和方法: 

  ● constructor――保存著用于創建當前對象的函數
   ● hasOwnProperty(propertyName)――用于檢查給定的屬性在當前對象實例中(而不是在實例的原型中)是否存在。其中,作為參數的屬性名(propertyName)必須以字符串形式指定(例如:o.hasOwnProperty("name"))
   ● isPrototypeOf(object)――用于檢查傳入的對象是否是另一個對象的原型
   ● propertyIsEnumerable(propertyName)――用于檢查給定的屬性是否能夠使用for-in語句來枚舉 
  ● toString()――返回對象的字符串表示
   ● valueOf()――返回對象的字符串、數值或布爾值表示。通常與toString()方法的返回值相同。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
51ⅴ精品国产91久久久久久| 精品久久中文字幕久久av| 国产精品久久久久久久久| 亚洲图片制服诱惑| 久久久久久999| 欧美精品激情视频| 国产精品情侣自拍| 国产精品综合久久久| 亚洲国产一区二区三区四区| 91日韩在线播放| 国产精品久久久久77777| 中日韩美女免费视频网站在线观看| 国产精品视频永久免费播放| 日韩av电影手机在线观看| 亚洲网站在线看| 久久亚洲精品毛片| 亚洲欧洲美洲在线综合| 国产精品福利网| 欧美激情图片区| 中文字幕亚洲欧美| 国产精品美腿一区在线看| 日韩在线观看av| 综合激情国产一区| 亚洲性猛交xxxxwww| 成人午夜两性视频| 欧美日韩免费观看中文| 日韩欧美一区二区在线| 欧美剧在线观看| 精品久久久久久久中文字幕| 66m—66摸成人免费视频| 日韩av在线不卡| 亚洲国产中文字幕久久网| 欧美日韩美女视频| 一本大道香蕉久在线播放29| 国产精品美女免费| 欧美理论电影在线播放| 亚洲精品视频中文字幕| 91sao在线观看国产| 中文字幕少妇一区二区三区| 日韩欧美在线观看| 亚洲精品欧美日韩专区| 国产精品久久久av| 国产精品一区二区三区成人| 91日韩在线视频| 97精品国产97久久久久久免费| 91中文在线视频| 中文字幕日韩电影| 国产在线a不卡| 2019精品视频| 亚洲激情在线观看视频免费| 国产精品久久久久999| 国产欧美日韩精品在线观看| 亚洲美女av电影| 国产日韩欧美在线看| www.日韩视频| 色婷婷av一区二区三区久久| 亚洲天堂影视av| 亚洲在线视频福利| 日本久久精品视频| 国产精品wwwwww| 国产精品扒开腿做爽爽爽的视频| 国产精品偷伦一区二区| 欧美日韩国产在线| 最新国产成人av网站网址麻豆| 亚洲二区在线播放视频| 成人女保姆的销魂服务| 日韩国产欧美精品一区二区三区| 日韩美女激情视频| 日韩精品免费在线观看| 91在线观看免费观看| 欧美理论在线观看| 丝袜美腿亚洲一区二区| 最近中文字幕2019免费| 爱福利视频一区| 国产精品爽爽ⅴa在线观看| 精品偷拍各种wc美女嘘嘘| 国产mv久久久| 中文综合在线观看| 成人网址在线观看| 欧美大全免费观看电视剧大泉洋| 精品偷拍各种wc美女嘘嘘| 美日韩丰满少妇在线观看| 姬川优奈aav一区二区| 国产精品久久久亚洲| 91在线网站视频| 日韩欧美亚洲成人| 97视频国产在线| 国产成人精品av| 亚洲日本中文字幕免费在线不卡| 国产精品手机播放| 欧美激情视频三区| 国产精品偷伦视频免费观看国产| 国产精品极品尤物在线观看| 中文字幕v亚洲ⅴv天堂| 精品色蜜蜜精品视频在线观看| 欧美黄网免费在线观看| 日本精品中文字幕| 国产精品一区二区久久| 国产欧美一区二区三区在线| 亚洲丝袜在线视频| 国产精品私拍pans大尺度在线| 精品久久在线播放| 在线观看亚洲视频| 91精品久久久久久久久久另类| 热久久免费视频精品| 欧美激情精品久久久久久久变态| 国产一区二区三区在线视频| 成人免费观看49www在线观看| 亚洲男人第一av网站| 亲子乱一区二区三区电影| 日韩小视频在线| 欧亚精品中文字幕| 亚洲精品一区二区网址| 中文国产亚洲喷潮| 久久久久一本一区二区青青蜜月| 精品久久久久久久久久国产| 91精品国产九九九久久久亚洲| 4k岛国日韩精品**专区| 91超碰中文字幕久久精品| 91精品国产自产91精品| 亚州成人av在线| 岛国av一区二区三区| 狠狠躁18三区二区一区| 久久99国产精品自在自在app| 欧美性一区二区三区| 久久91精品国产91久久跳| 亚洲肉体裸体xxxx137| 亚洲一区www| 久久久亚洲影院| 国产不卡在线观看| 日韩视频免费大全中文字幕| 国产精品久久久久久久久男| 国产在线精品播放| 国产精品99久久久久久久久| 亚洲系列中文字幕| 日本成人免费在线| 久久精品国产精品亚洲| 亚洲第一色中文字幕| 亚洲激情在线观看| 欧美一级片免费在线| 91av在线网站| 亚洲成人a级网| 国产综合久久久久| 国产在线视频2019最新视频| 国产综合在线观看视频| 久久精品国产一区二区电影| 色婷婷**av毛片一区| 国产精品欧美日韩| 欧美激情精品久久久久久变态| 国产精品久久久久久av福利软件| 久久久999国产| 国产亚洲人成a一在线v站| 欧美日韩成人精品| 国产一区二区三区直播精品电影| 久久理论片午夜琪琪电影网| 精品国产1区2区| 日本欧美在线视频| 欧美另类老肥妇| 热99在线视频| 国产免费一区二区三区在线能观看| 亚洲香蕉伊综合在人在线视看| 岛国精品视频在线播放| 色综合久久天天综线观看| 97国产在线观看|