摘要:對(duì)象對(duì)象的概念所謂對(duì)象就是是一個(gè)擁有屬性和方法的集合體對(duì)象的分類內(nèi)置對(duì)象原生對(duì)象引用類型可以稱作為內(nèi)置對(duì)象宿主對(duì)象就是寄生在一個(gè)東西上的對(duì)象比如瀏覽器提供的對(duì)象比如自定義對(duì)象開發(fā)人員創(chuàng)建的對(duì)象對(duì)象是什么類型是所有類型的父級(jí)創(chuàng)建對(duì)象對(duì)象的初始
對(duì)象 對(duì)象的概念
所謂對(duì)象就是是一個(gè)擁有屬性和方法的集合體
對(duì)象的分類
內(nèi)置對(duì)象/原生對(duì)象:
引用類型可以稱作為內(nèi)置對(duì)象
宿主對(duì)象:
就是寄生在一個(gè)東西上的對(duì)象比如瀏覽器提供的對(duì)象
比如:DOM、BOM
自定義對(duì)象
開發(fā)人員創(chuàng)建的對(duì)象
Object對(duì)象是什么
object類型是所有JavaScript類型的父級(jí)
創(chuàng)建對(duì)象 對(duì)象的初始化器創(chuàng)建方式var 對(duì)象名 = { 屬性名 : 屬性值, 方法名 : function(){ 方法體 } }
注意: 如果存在多個(gè)屬性名的話中間用 " , "隔開
示例代碼:
var obj1 = { name : "一花一世界", name1 : "一葉一孤城", soso : function () { console.log("你是哈士奇") } };對(duì)象的構(gòu)造函數(shù)方式
利用所有引用類型常見對(duì)應(yīng)的對(duì)象 - 就是具有具體的類型
var num = new Number();// Number類型
var str = new String();// String類型
var boo = new Boolean();// Boolean類型
利用Object作為構(gòu)造函數(shù)創(chuàng)建對(duì)象
var 對(duì)象名 = new Object();
var 對(duì)象名 = Object();
示例代碼:
var num = new Number();// Number類型 var num2 = Number(); var str = new String();// String類型 var boo = new Boolean();// Boolean類型 var obj2 = new Object(); var obj3 = Object(); console.log(obj2);// {}// 調(diào)用結(jié)果為 { } console.log(obj3);// {}// 調(diào)用結(jié)果為 { } var obj4 = new Object(undefined); var obj5 = new Object(null); console.log(obj4);// 調(diào)用結(jié)果為 { } console.log(obj5);// 調(diào)用結(jié)果為 { }利用Object.create()方法創(chuàng)建對(duì)象
var 對(duì)象名 = Object.create(null) - 就是創(chuàng)建一個(gè)空對(duì)象
var 對(duì)象名 = Object.create(obj)
obj - 表示另一個(gè)對(duì)象
特點(diǎn) - 當(dāng)前創(chuàng)建的新對(duì)象擁有與obj對(duì)象相同的屬性和方法
示例代碼:
var obj6 = Object.create(null); var obj7 = Object.create(obj1); console.log(obj6);// 調(diào)用結(jié)果為 { } console.log(obj7);// 調(diào)用結(jié)果為 { }創(chuàng)建空對(duì)象
創(chuàng)建空對(duì)象的方式目前有以下幾種
var obj1 = {};
var obj2 = new Object();
var obj3 = Object();
var obj4 = new Object(undefined);
var obj5 = new Object(null);
var obj6 = Object(undefined);
var obj7 = Object(null);
var obj8 = Object.create(null);
創(chuàng)建方式的對(duì)比
Number,String和Boolean
字面量方式創(chuàng)建的是原始類型,構(gòu)造函數(shù)方式創(chuàng)建是引用類型
Array和Object
無論是字面量方式還是構(gòu)造函數(shù)方式創(chuàng)建的都是引用類型
示例代碼:
// 1. Number類型 var num1 = 100;// 字面量方式 var num2 = new Number();// 構(gòu)造函數(shù)方式 // 2. String類型 var str1 = "一花一世界";// 字面量方式 var str2 = new String();//構(gòu)造函數(shù)方式 // 3.Boolean類型 var boo1 = true;// 字面量方式 var boo2 = new Boolean();// 構(gòu)造函數(shù)方式 // 4.Array類型 var arr1 = []; var arr2 = new Array(); // 5.Object類型 var obj1 = {}; var obj2 = new Object();變量與對(duì)象
示例代碼:
/* 變量聲明并初始化值 */ var obj = 100; /* 輸出調(diào)用 */ console.log(obj);// 調(diào)用結(jié)果為 100 /* 變量重新賦值為對(duì)象 */ obj = { /* 對(duì)象的屬性 */ name : "一花一世界", /* 對(duì)象的方法 */ soso : function () { /* 方法體 */ console.log("一葉一孤城"); } }; /* 輸出調(diào)用 */ console.log(obj);// 調(diào)用結(jié)果為 { name: "一花一世界", soso: [Function: soso] }變量,函數(shù)與對(duì)象
注意: 如果訪問一個(gè)對(duì)象不存在的屬性時(shí) - 值為 undefined
示例代碼:
var obj = { neme : "一花一世界", "Type-Content" : "text/HTML", sayMe : function () { console.log("一葉一孤城"); } }; console.log(obj.soso);// 調(diào)用結(jié)果為 undefined
創(chuàng)建一個(gè)對(duì)象 - 具有name和age屬性與sayMe()方法
對(duì)象的屬性 - 類似于變量
對(duì)象的屬性 - 類似于變量
其實(shí)定義的變量就是某個(gè)對(duì)象的屬性,定義的函數(shù)就是某個(gè)對(duì)象的方法
JavaScript找那個(gè)具有一個(gè)全局對(duì)象(Global) - 僅存在與概念
瀏覽器運(yùn)行環(huán)境 - BOM中Window(窗口)對(duì)象
Node.js運(yùn)行環(huán)境
示例代碼:
var obj1 = { name : "一花一世界", age : "有點(diǎn)飄", sayMe : function () { console.log("一葉一孤城"); } }; console.log(Object);// 調(diào)用結(jié)果為 [Function: Object] console.log(Global);// 調(diào)用結(jié)果為報(bào)錯(cuò) - ReferenceError: Global is not defined
控制臺(tái)調(diào)用圖:
注意: 不適合用于復(fù)雜命名的屬性名稱
示例代碼:
var obj = { neme : "一花一世界", "Type-Content" : "text/HTML", sayMe : function () { console.log("一葉一孤城"); } }; console.log(obj.neme);// 調(diào)用結(jié)果為 一花一世界
控制臺(tái)調(diào)用圖:
適用于復(fù)雜命名的屬性名稱
特點(diǎn): 該種方式比較通用
示例代碼:
var obj = { neme : "一花一世界", "Type-Content" : "text/HTML", sayMe : function () { console.log("一葉一孤城"); } }; console.log(obj.neme);// 調(diào)用結(jié)果為 一花一世界 console.log(obj["Type-Content"]);// 調(diào)用結(jié)果為 text/HTML
控制臺(tái)調(diào)用圖:
示例代碼:
var obj = { name : "一花一世界", sayMe : function(){ console.log("一花一世界"); } } obj.name = "一葉一孤城"; console.log(obj);// 調(diào)用結(jié)果為 { name: "一葉一孤城", sayMe: [Function: sayMe] }對(duì)象名[已存在的屬性名] = 屬性值
示例代碼:
var obj = { name : "一花一世界", sayMe : function(){ console.log("一花一世界"); } } obj["name"] console.log(obj);// 調(diào)用結(jié)果為 { name: "一葉一孤城", sayMe: [Function: sayMe] }刪除對(duì)象的屬性 delete 對(duì)象名.屬性名
示例代碼:
var obj = { name : "一花一世界", sayMe : function(){ console.log("一花一世界"); } } delete obj.name; console.log(obj.name);//調(diào)用結(jié)果為 undefineddelete 對(duì)象名[屬性名]
示例代碼:
var obj = { name : "一花一世界", sayMe : function(){ console.log("一花一世界"); } } delete obj["name"]; console.log(obj.name);//調(diào)用結(jié)果為 undefined檢測(cè)對(duì)象的屬性 判斷對(duì)象的屬性值是否為 undefined
示例代碼:
var obj = { name : "張無忌", age : 18 } if (obj.age !== undefined) { console.log("obj對(duì)象的age屬性存在..."); } else { console.log("請(qǐng)先定義obj對(duì)象的age屬性..."); }判斷對(duì)象的屬性值 - 先轉(zhuǎn)換為Boolean類型
示例代碼:
var obj = { name : "張無忌", age : 18 } if (obj.age) { console.log("obj對(duì)象的age屬性存在..."); }利用in關(guān)鍵字進(jìn)行判斷
示例代碼:
var obj = { name : "張無忌", age : 18 } if ("age" in obj) { console.log("obj對(duì)象的age屬性存在..."); } else { console.log("obj對(duì)象的age屬性不存在...") }Object類型提供了hasOwnProperty()方法
示例代碼:
var obj = { name : "張無忌", age : 18 } if (obj.hasOwnProperty("age")) { console.log("obj對(duì)象的age屬性存在..."); } else { console.log("obj對(duì)象的age屬性不存在...") }遍歷對(duì)象的屬性
示例代碼:
var obj = { name : "一花一世界", age : 18, sayMe : function(){ console.log("一花一世界"); } } // 1.for...in語句 for (var objAttr in obj) { // 通過對(duì)象屬性或方法對(duì)應(yīng)的值的類型進(jìn)行區(qū)別 if (obj[objAttr] instanceof Function) { // 當(dāng)前是對(duì)象的方法 obj[objAttr](); } else { // 當(dāng)前是對(duì)象的屬性 console.log(obj[objAttr]); } } // 2.Object類型提供了keys()方法 - 只能遍歷可枚舉的屬性 var arr = Object.keys(obj); for (var v in arr) { var objAttr = arr[v]; // 通過對(duì)象屬性或方法對(duì)應(yīng)的值的類型進(jìn)行區(qū)別 if (obj[objAttr] instanceof Function) { // 當(dāng)前是對(duì)象的方法 obj[objAttr](); } else { // 當(dāng)前是對(duì)象的屬性 console.log(obj[objAttr]); } } // 3.Object類型提供了getOwnPropertyNames()方法 - 包括不可枚舉的屬性 var arr = Object.getOwnPropertyNames(obj); for (var v in arr) { var objAttr = arr[v]; // 通過對(duì)象屬性或方法對(duì)應(yīng)的值的類型進(jìn)行區(qū)別 if (obj[objAttr] instanceof Function) { // 當(dāng)前是對(duì)象的方法 obj[objAttr](); } else { // 當(dāng)前是對(duì)象的屬性 console.log(obj[objAttr]); } }調(diào)用對(duì)象的方法
對(duì)象名.方法名()
對(duì)象名[方法名]()
示例代碼:
var obj = { name : "一花一世界", age : 18, sayMe : function(){ console.log("一花一世界"); } } // 1.對(duì)象名.方法名() obj.sayMe(); // 2.對(duì)象名[方法名]() obj["sayMe"]();新增對(duì)象的方法
注意: 和新增對(duì)象的屬性方法類似
示例代碼:
var obj = { name : "一花一世界", age : 18, sayMe : function(){ console.log("我是風(fēng)兒"); } } // 1.對(duì)象名.新的方法名 = function(){} obj.sayYou = function(){ console.log("你是沙"); } console.log(obj); // 2.對(duì)象名[新的方法名] = function(){}修改對(duì)象的方法
注意: 和修改對(duì)象屬性的方法類似
示例代碼:
var obj = { name : "一花一世界", age : 18, sayMe : function(){ console.log("我是風(fēng)兒"); } } // 1.對(duì)象名.方法名 = function(){} obj.sayMe = function(){ console.log("你是沙"); } console.log(obj); obj.sayMe(); // 2.對(duì)象名[方法名] = function(){}刪除對(duì)象的方法
注意: 和刪除對(duì)象屬性的方法類似
示例代碼:
var obj = { name : "一花一世界", age : 18, sayMe : function(){ console.log("一笑一人生"); } } // 1.delete 對(duì)象名.方法名 delete obj.sayMe; // 訪問對(duì)象中不存在的方法 -> 報(bào)錯(cuò)(TypeError: obj.sayMe is not a function) // obj.sayMe(); console.log(obj.sayMe);// undefined console.log(obj); // 以屬性是否存在的方式進(jìn)行判斷 if ("sayMe" in obj) { // 確認(rèn)目前是一個(gè)方法 if (obj.sayMe instanceof Function) { obj.sayMe();// 方法調(diào)用 } } // 以上代碼可以優(yōu)化為以下代碼 if ("sayMe" in obj && obj.sayMe instanceof Function) { obj.sayMe();// 方法調(diào)用 } // 2.delete 對(duì)象名[方法名]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/108138.html
摘要:錯(cuò)誤與異常錯(cuò)誤與異常概念所謂錯(cuò)誤就是錯(cuò)誤就是程序中不正常的運(yùn)行狀態(tài)在其他編程語言中稱為異常或錯(cuò)誤解釋器會(huì)為每個(gè)錯(cuò)誤情況創(chuàng)建并且拋出一個(gè)對(duì)象對(duì)象包含錯(cuò)誤的描述信息語句語句作用用于捕獲和處理代碼中的錯(cuò)誤語句作用用于處理語句中出現(xiàn)的錯(cuò)誤語句 錯(cuò)誤與異常 錯(cuò)誤與異常概念 所謂錯(cuò)誤就是錯(cuò)誤就是程序中不正常的運(yùn)行狀態(tài) 在其他編程語言中稱為異?;蝈e(cuò)誤 解釋器會(huì)為每個(gè)錯(cuò)誤情況創(chuàng)建并且拋出一個(gè)Erro...
摘要:關(guān)鍵字關(guān)鍵字描述本身沒有任何含義但它也可以代表任何含義被自動(dòng)定義在所有的函數(shù)作用域中都有一個(gè)共同點(diǎn)它總是要返回一個(gè)對(duì)象指向哪個(gè)對(duì)象不取決于定義在哪它取決于調(diào)用位置注意建議搞不明白時(shí)盡量不要使用否則會(huì)很混亂一定要理解之后使用的基本用法表示在函 this關(guān)鍵字 this關(guān)鍵字描述 this本身沒有任何含義,但它也可以代表任何含義 this被自動(dòng)定義在所有的函數(shù)作用域中 this都有一個(gè)共...
摘要:繼承原型鏈所謂言行鏈就是如果構(gòu)造函數(shù)或?qū)ο蟮脑椭赶驑?gòu)造函數(shù)或?qū)ο蟮脑驮僦赶驑?gòu)造函數(shù)或?qū)ο笠源祟愅谱罱K的構(gòu)造函數(shù)或?qū)ο蟮脑l(xiāng)指向的原型由此形成一條鏈狀結(jié)構(gòu)被稱之為原型鏈?zhǔn)纠a原型鏈通過構(gòu)造函數(shù)創(chuàng)建對(duì)象將的原型指向?qū)ο笸ㄟ^構(gòu)造函數(shù)創(chuàng)建對(duì)象 繼承 原型鏈 所謂言行鏈就是如果構(gòu)造函數(shù)或?qū)ο驛,A的原型指向構(gòu)造函數(shù)或?qū)ο驜,B的原型再指向構(gòu)造函數(shù)或?qū)ο驝,以此類推,最終的構(gòu)造函數(shù)或?qū)ο蟮脑?..
摘要:嚴(yán)格模式嚴(yán)格模式的概念所謂嚴(yán)格模式就是對(duì)中的一種限制性更強(qiáng)的方式屬于代碼的一種強(qiáng)制規(guī)則來規(guī)范代碼的格式簡單的說就是必須按照嚴(yán)格模式的規(guī)則書寫代碼否則就會(huì)報(bào)錯(cuò)嚴(yán)格模式修正了一些引擎難以優(yōu)化的錯(cuò)誤同樣的代碼有些時(shí)候嚴(yán)格模式會(huì)比非嚴(yán)格模式下更加快 嚴(yán)格模式 嚴(yán)格模式的概念 所謂嚴(yán)格模式就是對(duì)JavaScript中的一種限制性更強(qiáng)的方式. 屬于代碼的一種強(qiáng)制規(guī)則,來規(guī)范代碼的格式簡單的說就是...
摘要:類型大小寫轉(zhuǎn)換表示將小寫內(nèi)容轉(zhuǎn)換為大寫內(nèi)容表示將大小內(nèi)容轉(zhuǎn)換為小寫內(nèi)容示例代碼構(gòu)造函數(shù)方式表示將小寫內(nèi)容轉(zhuǎn)換為大寫內(nèi)容表示將大小內(nèi)容轉(zhuǎn)換為小寫內(nèi)容調(diào)用結(jié)果為調(diào)用結(jié)果為控制臺(tái)調(diào)用效果圖根據(jù)指定位置獲取字符串表示通過指定字符串中指定字符 String類型 大小寫轉(zhuǎn)換 toUpperCase() - 表示將小寫內(nèi)容轉(zhuǎn)換為大寫內(nèi)容 toLowerCase() - 表示將大小內(nèi)容轉(zhuǎn)換為小寫內(nèi)容...
摘要:類型檢測(cè)數(shù)組示例代碼調(diào)用結(jié)果為方法作用用于判斷當(dāng)前對(duì)象的數(shù)據(jù)類型結(jié)果特點(diǎn)可以準(zhǔn)確判斷出當(dāng)前變量的類型調(diào)用結(jié)果為調(diào)用結(jié)果為報(bào)錯(cuò)調(diào)用結(jié)果為調(diào)用結(jié)果為方法判斷指定類型是否出現(xiàn)在當(dāng)前對(duì)象的原型鏈中調(diào)用結(jié)果為轉(zhuǎn)換數(shù)組提供了兩種方法用于數(shù)組的轉(zhuǎn) Array類型 檢測(cè)數(shù)組 示例代碼: var arr = [1,2,3,4,5]; console.log(arr instanceof Array);/...
閱讀 2658·2023-04-26 00:56
閱讀 2078·2021-10-25 09:46
閱讀 1317·2019-10-29 15:13
閱讀 884·2019-08-30 15:54
閱讀 2273·2019-08-29 17:10
閱讀 2681·2019-08-29 15:43
閱讀 547·2019-08-29 15:28
閱讀 3102·2019-08-29 13:24