摘要:張無忌對象的屬性存在對象的屬性不存在使用進行判斷。張無忌對象的屬性存在請先定義對象的屬性使用語句進行判斷張無忌對象的屬性存在刪除對象的屬性可以用操作符刪除一個不是繼承而來的屬性。
對象 對象的概述 對象是什么
JavaScript中的對象,和其他編程語言中的對象一樣。可以對比現實生活中的一些東西來理解他。
在JavaScript中,一個對象可以使一個單純的擁有屬性和類型的實體。假如和一個杯子相比較,一個杯子是一個對象,擁有屬性。杯子有顏色、圖案、重量等。同樣,JavaScript對象也有屬性來定義它的特征。
方法是關聯到某個對象的函數,或者簡單來說,一個方法是一個值為某和函數的對象屬性。定義方法就像定義普通的函數,出了他們必須被賦給對象的某個屬性。
1.內置對象/原生對象
就是JavaScript語言預定義的對象。在ECMAScript標準定義,有JavaScript解釋器/引擎提供具體實現。
2.宿主對象
指的是JavaScript運行環境提供的對象。一般由瀏覽器廠商提供實現(目前也有獨立的JavaScript解釋器/引擎提供實現),主要分文BOM和DOM。
3.自定義對象
就是由開發人員自主創建的對象。
對象的初始化器常見方式,代碼如下;
Object類型與Array、Math等一樣都是JavaScript的引用類型。不過Object類型是JavaScript中所有類型的父級(所有類型的對象都可以使用Object的屬性和方法)。
JavaScript可以通過Object的構造函數來創建自定義對象。當以非構造函數形式被調用時,Object等同于new Object()。
使用對象初始化器也被稱作通過字面值創建對象。
1.對象的初始化器創建方式 var 對象名 = { 屬性名 : 屬性值, 方法名 : function(){ 方法體 } } var obj1 = { name : "張無忌", age : 18, sayMe : function(){ console.log("我是張無忌"); } }構造函數方式
構造函數時通過JavaScript提供的預定義類型的構造函數來創建對象的。
代碼如下;
對象的構造函數方式 利用所有引用類型創建對應的對象 -> 具有具體的類型 var num = new Number();// Number類型 var str = new String();// String類型 var boo = new Boolean();// Boolean類型 利用Object作為構造函數創建對象 var 對象名 = new Object(); var 對象名 = 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);//{}空對象 console.log(obj3);//{}空對象 var obj4 = new Object(undefined); var obj5 = new Object(null); console.log(obj4);//{}空對象 console.log(obj5);//{}空對象Object.create()方法
Object.create()方法創建一個擁有指定原型和若干個指定屬性的對象。
參數;
1.proto參數;一個對象,作為新創建對象的原型
2.propertiesObject參數;可選。該參數對象是一組屬性與值,該對象的屬性名稱試試創建的對象的屬性名稱,值是屬性描述符。
代碼如下;
利用Object.create()方法創建對象 var 對象名 = Object.create(null) -> 創建一個空對象 var 對象名 = Object.create(obj) obj - 表示另一個對象 特點 - 當前創建的新對象擁有與obj對象相同的屬性和方法 var obj6 = Object.create(null); var obj7 = Object.create(obj1);對象的屬性 定義對象的屬性
一個JavaScript對象有很對屬性。一個對象的屬性可以解釋成一個附加到對象的變量。對象的屬性和普通的JavaScript變量基本沒有什么區別,僅僅是屬性屬于某個對象。
var obj = { name : "張無忌", "Type-Content" : "text/html", sayMe : function(){ console.log("我是張無忌"); } } /* 1.對象名.屬性名 * 不適用于復雜命名的屬性名稱 */ console.log(obj.name);// 張無忌 // console.log(obj.Type-Content); 2.對象名[屬性名] - 通用的調用方式 適用于復雜命名的屬性名稱 console.log(obj["name"]);// 張無忌 console.log(obj["Type-Content"]);// text/html 訪問一個對象不存在的屬性 -> 值為 undefined console.log(obj.age);訪問對象的屬性
1.JavaScript可以通過點符號來訪問一個對象的屬性。
var emp = { ename:"Tom",salary:3500 }; emp.ename = "Tommy"http://修改屬性的值 console.log(emp.ename);//獲取屬性的值
2.JavaScript對象的屬性也可以通過方括號訪問。
var emp = { ename:"Tom",salary:3500 }; emp["ename"] = "Tony";//修改屬性的值 console.log(emp["ename"]);//獲取屬性的值遍歷屬性
JavaScript提供了三種原生方法用于遍歷或枚舉對象的屬性;
1.for...in循環:該方法依次訪問一個對象及其原型鏈中所有課枚舉的屬性。
2.Objectkeys(object)方法:該方法返回一個對象o自身包含(不包括原型中)的所有屬性的名稱的數組。
3.ObjectgetOwnpropertyNames(object)方法:該方法返回一個數組,他包含了對象o所有擁有的屬性(無論是否可枚舉)的名稱。
var obj = { name : "張三", age : 18, sayMe : function(){ console.log("我是張三"); } } // 1.for...in語句 for (var objAttr in obj) { // 通過對象屬性或方法對應的值的類型進行區別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } } // 2.Object類型提供了keys()方法 - 只能遍歷可枚舉的屬性 var arr = Object.keys(obj); for (var v in arr) { var objAttr = arr[v]; // 通過對象屬性或方法對應的值的類型進行區別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } } // 3.Object類型提供了getOwnPropertyNames()方法 - 包括不可枚舉的屬性 var arr = Object.getOwnPropertyNames(obj); for (var v in arr) { var objAttr = arr[v]; // 通過對象屬性或方法對應的值的類型進行區別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } }屬性訪問出錯
當不確定對象是否存在、對象的屬性是否存在時,可以使用錯誤處理結構try...catch語句塊來捕捉拋出的錯誤,避免程序異常終止。
//訪問未聲明的變量 console.log(emp); //訪問未聲明的屬性 var emp = {}; console.log(emp.ename); //訪問未聲明的屬性的成員 console.log(emp.ename.length);檢查對象的屬性
檢查對象的屬性可以使用以下四種方法檢測對象中是否存在指定屬性
1.使用關鍵字in
var obj = { name : "張無忌", age : 18 } if ("age" in obj) { console.log("obj對象的age屬性存在..."); } else { console.log("obj對象的age屬性不存在...")
2.使用Object對象的hasOwnProperty()方法。
var obj = { name : "張無忌", age : 18 } if (obj.hasOwnProperty("age")) { console.log("obj對象的age屬性存在..."); } else { console.log("obj對象的age屬性不存在...") }
3.使用undefined進行判斷。
var obj = { name : "張無忌", age : 18 } if (obj.age !== undefined) { console.log("obj對象的age屬性存在..."); } else { console.log("請先定義obj對象的age屬性..."); }
4.使用if語句進行判斷
var obj = { name : "張無忌", age : 18 } if (obj.age) { console.log("obj對象的age屬性存在..."); }刪除對象的屬性
可以用delete操作符刪除一個不是繼承而來的屬性。
var obj = { name : "張無忌", sayMe : function(){ console.log("我是張無忌"); } } 1.delete 對象名.屬性名 2.delete 對象名[屬性名] delete obj.name; console.log(obj.name);// undefined對象的方法 定義對象的方法
定義方法就像定義普通的函數,出了他們必須被賦予給對象的某個屬性。
var obj = { name : "張無忌", age : 18, sayMe : function(){ console.log("我是張無忌"); } } // 1.對象名.新的方法名 = function(){} obj.sayYou = function(){ console.log("你是周芷若"); } console.log(obj); // 2.對象名[新的方法名] = function(){}調用對象的方法
對象方法的調用類似于對象屬性的調用,很簡單 有兩種屬性
var obj = { name : "張無忌", age : 18, sayMe : function(){ console.log("我是張無忌"); } } // 1.對象名.方法名() obj.sayMe(); // 2.對象名[方法名]() obj["sayMe"]();刪除對象的方法
可以用delete操作符刪除對象
代碼示例;
var obj = { name : "張無忌", age : 18, sayMe : function(){ console.log("我是張無忌"); } } // 1.delete 對象名.方法名 delete obj.sayMe; // 訪問對象中不存在的方法 -> 報錯(TypeError: obj.sayMe is not a function) // obj.sayMe(); console.log(obj.sayMe);// undefined console.log(obj); // 以屬性是否存在的方式進行判斷 if ("sayMe" in obj) { // 確認目前是一個方法 if (obj.sayMe instanceof Function) { obj.sayMe();// 方法調用 } } // 以上代碼可以優化為以下代碼 if ("sayMe" in obj && obj.sayMe instanceof Function) { obj.sayMe();// 方法調用 } // 2.delete 對象名[方法名]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96915.html
摘要:創建對象對象直接量構造函數原型繼承類繼承對象擁有自有屬性和繼承屬性。遍歷順序是以廣度優先遍歷所以使用便可以判斷是否是對象自有的屬性。可執行對象通過如下方法可以創建一個可執行對象既可以當作對象來使用有原型鏈,也可以當作函數來直接調用 原文: http://pij.robinqu.me/Javascript_Core/Javascript_Basics/Objects.html ...
摘要:基礎語法區分大小寫是一種區分大小寫的語法,意味著的關鍵字變量名函數名以及其他一切的字符表示都要使用一致的大小寫形式。化物語化物語空格和換行會忽略代碼中出現的空格換行制表符。如果不用花括號獨立獨立編寫一個語句,語法并不報錯,但不推薦。 JavaScript基礎語法 區分大小寫 JavaScript是一種區分大小寫的語法,意味著JavaScript的關鍵字、變量名、函數名以及其他一切的字符...
摘要:瀏覽器只是實現的宿主環境之一,其他宿主環境包括和。年月,版發布,成為國際標準。事件定義了事件和事件處理的接口。對于已經正式納入標準的來說,盡管各瀏覽器都實現了某些眾所周知的共同特性,但其他特性還是會因瀏覽器而異。 JavaScript 是面向 Web 的編程語言,絕大多數現代網站都使用了 JavaScript,并且所有的現代 Web 瀏覽器(電腦,手機,平板)均包含了 JavaScri...
摘要:數組創建數組數組字面量使用構造函數數組本質上是所以要判斷是不是數組,需要通過判斷。數組長度使用屬性獲取元素的個數。例如函數的對象就是這樣 原文: http://pij.robinqu.me/JavaScript_Core/JavaScript_Basics/Array.html 源代碼: https://github.com/RobinQu/Programing-In-...
摘要:多數運算符都是由標點符號表示,比如和。通常會根據需要對操作數進行類型轉換左值是一個古老的屬于,它是指表達式只能出現在賦值運算符的左側。也稱為嚴格相等運算符,它用來檢測兩個操作數是否嚴格相等。運算符的檢測規則是和運算符的求反。 源代碼: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/...
摘要:學編程真的不是一件容易的事不管你多喜歡或是多會編程,在學習和解決問題上總會碰到障礙。熟練掌握核心內容,特別是和多線程初步具備面向對象設計和編程的能力掌握基本的優化策略。 學Java編程真的不是一件容易的事,不管你多喜歡或是多會Java編程,在學習和解決問題上總會碰到障礙。工作的時間越久就越能明白這個道理。不過這倒是一個讓人進步的機會,因為你要一直不斷的學習才能很好的解決你面前的難題...
閱讀 3095·2021-10-13 09:40
閱讀 3945·2021-09-22 15:51
閱讀 1493·2021-09-22 15:48
閱讀 1060·2021-09-06 15:00
閱讀 1790·2019-08-30 15:43
閱讀 2355·2019-08-29 18:35
閱讀 1667·2019-08-29 16:18
閱讀 3612·2019-08-29 12:49