摘要:對(duì)象是什么在中,一個(gè)對(duì)象就像一個(gè)多帶帶擁有屬性和類型的實(shí)體。一個(gè)杯子作為一個(gè)對(duì)象,杯子有顏色重量等屬性。同樣,對(duì)象也有屬性定義它的特征。方法是關(guān)聯(lián)到某個(gè)對(duì)象的函數(shù),或者說,一個(gè)方法是一個(gè)值為某個(gè)函數(shù)的對(duì)象屬性。
對(duì)象是什么
在JavaScript中,一個(gè)對(duì)象就像一個(gè)多帶帶擁有屬性和類型的實(shí)體。一個(gè)杯子作為一個(gè)對(duì)象,杯子有顏色、重量等屬性。同樣,JavaScript對(duì)象也有屬性定義它的特征。
方法是關(guān)聯(lián)到某個(gè)對(duì)象的函數(shù),或者說,一個(gè)方法是一個(gè)值為某個(gè)函數(shù)的對(duì)象屬性。
對(duì)象可以分為以下幾類
內(nèi)置對(duì)象/原生對(duì)象
就是JavaScript語言預(yù)定義的對(duì)象
宿主對(duì)象
是JavaScript運(yùn)行環(huán)境提供的對(duì)象
自定義對(duì)象
就是開發(fā)人員自主創(chuàng)建的對(duì)象
Object對(duì)象Object類型是引用類型。但Object類型是所有JavaScript中所有類型的父級(jí)(所有類型的對(duì)象都可以是Object的屬性和方法)
創(chuàng)建對(duì)象/* * 1. 對(duì)象的初始化器創(chuàng)建方式 * var 對(duì)象名={ * 屬性名 : 屬性值 * 方法名 : function{ * 方法體 * } * } */ var obj = { name : "九筒", age : 2, sayYou : function () { console.log("火鍋") } }; /* 2. 對(duì)象的構(gòu)造函數(shù)方式 * * 利用所有的引用類型創(chuàng)建對(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(); var str = new Storage(); var boo = new Boolean(); var obj2 = new Object(); var obj3 = Object(); /* 利用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 obj4 = Object.create(null); var obj5 = Object.create(obj);對(duì)象的屬性 定義對(duì)象的屬性
對(duì)象的屬性就像是附加到對(duì)象上的變量
/*對(duì)象介意定義多個(gè)屬性 * 屬性之間使用逗號(hào)分開*/ var obj = { name : "吳凡", age : 23, book : function () { console.log("暗毀") } };調(diào)用對(duì)象的屬性
/* 調(diào)用對(duì)象的屬性 * 對(duì)象名.屬性名 * 不適用于復(fù)雜命名的屬性名稱*/ console.log(obj.name); /* 對(duì)象名[屬性名]-通用方式 適用于復(fù)雜命名的屬性名稱 * */ console.log(obj["name"]);//屬性名是字符串形式新增、刪除、修改對(duì)象的屬性
var obj = { name : "火鍋", variety : "比熊", age : function () { console.log("3") } } /* 新增對(duì)象的屬性 * 1對(duì)象名.新的屬性名 = 屬性值 * 2對(duì)象名[新的屬性名] = 屬性值*/ obj.col="白色"; console.log(obj.col);//白色 /*刪除對(duì)象的屬性 * delete 對(duì)象名.屬性名 * delete 對(duì)象名[屬性名]*/ delete obj.col console.log(obj.col);//undefined /*修改對(duì)象的屬性 * 對(duì)象名.已存在的屬性名 = 屬性值 * 對(duì)象名[已存在的屬性名] = 屬性值*/ obj.name = "九筒"; console.log(obj.name);//九筒檢測對(duì)象的屬性
var obj = { name : "火鍋", variety : "比熊", age : function () { console.log("3") } }; console.log(obj.name) /* 1. 判斷對(duì)象的屬性值是否為undefined*/ if (obj.name !==undefined){ console.log("obj對(duì)象name屬性存在") }else{ console.log("obj對(duì)象name屬性不存在") } /* 2. 判斷對(duì)象的屬性值,先轉(zhuǎn)換為boolean類型*/ if (obj.name){ console.log("obj對(duì)象name屬性存在") } /* 3. 利用in關(guān)鍵字進(jìn)行判斷*/ if ("name" in obj){ console.log("obj對(duì)象name屬性存在") }else{ console.log("obj對(duì)象name屬性不存在") } /* 4. Object類型提供了hasOwnProperty()方法*/ if (obj.hasOwnProperty("name")){ console.log("obj對(duì)象name屬性存在") }else{ console.log("obj對(duì)象name屬性不存在") }便利屬性
var obj = { name : "小薄荷", age : "0.3", variety : 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]); } }對(duì)象的方法 調(diào)用、新增、修改、刪除對(duì)象的方法
調(diào)用、新增、修改、刪除對(duì)象的方法和屬性基本一樣
var obj = { name : "火鍋", variety : "比熊", age : function () { console.log("3") } } /*調(diào)用對(duì)象的方法*/ // 1.對(duì)象名.方法名() obj.sayMe(); // 2.對(duì)象名[方法名]() obj["sayMe"](); /*新增對(duì)象的方法*/ // 1.對(duì)象名.新的方法名 = function(){} obj.name = function(){ console.log("九筒"); } console.log(obj); // 2.對(duì)象名[新的方法名] = function(){} /*修改對(duì)象的方法*/ // 1.對(duì)象名.方法名 = function(){} obj.name = function(){ console.log("九筒"); } // 2.對(duì)象名[方法名] = function(){} /*刪除對(duì)象的方法*/ //1.delete 對(duì)象名.方法名 delete obj.sayMe; // 訪問對(duì)象中不存在的方法 -> 報(bào)錯(cuò)(TypeError: obj.sayMe is not a function) // obj.sayMe(); // 2.delete 對(duì)象名[方法名]
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/108137.html
摘要:對(duì)象數(shù)組初始化表達(dá)式,闖關(guān)記之上文檔對(duì)象模型是針對(duì)和文檔的一個(gè)。闖關(guān)記之?dāng)?shù)組數(shù)組是值的有序集合。數(shù)組是動(dòng)態(tài)的,根闖關(guān)記之語法的語法大量借鑒了及其他類語言如和的語法。 《JavaScript 闖關(guān)記》之 DOM(下) Element 類型 除了 Document 類型之外,Element 類型就要算是 Web 編程中最常用的類型了。Element 類型用于表現(xiàn) XML 或 HTML 元素...
摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...
摘要:對(duì)象在中,除了數(shù)字字符串布爾值這幾個(gè)簡單類型外,其他的都是對(duì)象。那么在函數(shù)對(duì)象中,這兩個(gè)屬性的有什么區(qū)別呢表示該函數(shù)對(duì)象的原型表示使用來執(zhí)行該函數(shù)時(shí)這種函數(shù)一般成為構(gòu)造函數(shù),后面會(huì)講解,新創(chuàng)建的對(duì)象的原型。這時(shí)的函數(shù)通常稱為構(gòu)造函數(shù)。。 本文原發(fā)于我的個(gè)人博客,經(jīng)多次修改后發(fā)到sf上。本文仍在不斷修改中,最新版請?jiān)L問個(gè)人博客。 最近工作一直在用nodejs做開發(fā),有了nodejs,...
摘要:然后將構(gòu)造函數(shù)的原型設(shè)為,便實(shí)現(xiàn)了對(duì)象繼承。首先,我們定義一個(gè)構(gòu)造函數(shù),并在其中定義一個(gè)局部變量。這里的是局部變量,其作用域仍然存在是閉包現(xiàn)象,而非對(duì)象屬性。 Javascript是動(dòng)態(tài)的,弱類型的,解釋執(zhí)行的程序設(shè)計(jì)語言。 Javascript極其靈活,支持多種程序設(shè)計(jì)范式:面向?qū)ο?、指令式、函?shù)式。JavaSCript最初被用于瀏覽器腳本,現(xiàn)在已經(jīng)是所有主流瀏覽器的默認(rèn)腳本語言。瀏...
摘要:可嵌入動(dòng)態(tài)文本于頁面,對(duì)瀏覽器事件作出響應(yīng),讀寫元素,控制等。年月,發(fā)布了一款面向普通用戶的新一代的瀏覽器版,市場份額一舉超過。網(wǎng)景將這門語言作為標(biāo)準(zhǔn)提交給了歐洲計(jì)算機(jī)制造協(xié)會(huì)。線程和的并發(fā)執(zhí)行都是線程安全的。后面會(huì)詳細(xì)講解對(duì)象類型的轉(zhuǎn)換。 本文由云+社區(qū)發(fā)表作者:殷源,專注移動(dòng)客戶端開發(fā),微軟Imagine Cup中國區(qū)特等獎(jiǎng)獲得者 JavaScript越來越多地出現(xiàn)在我們客戶端開...
摘要:在中,并沒有對(duì)抽象類和接口的支持。例如,當(dāng)對(duì)象需要對(duì)象的能力時(shí),可以有選擇地把對(duì)象的構(gòu)造器的原型指向?qū)ο?,從而達(dá)到繼承的效果。本節(jié)內(nèi)容為設(shè)計(jì)模式與開發(fā)實(shí)踐第一章筆記。 動(dòng)態(tài)類型語言 編程語言按數(shù)據(jù)類型大體可以分為兩類:靜態(tài)類型語言與動(dòng)態(tài)類型語言。 靜態(tài)類型語言在編譯時(shí)已確定變量類型,動(dòng)態(tài)類型語言的變量類型要到程序運(yùn)行時(shí),待變量被賦值后,才具有某種類型。 而JavaScript是一門典型...
閱讀 2184·2021-11-11 16:55
閱讀 3249·2021-10-11 10:58
閱讀 3208·2021-09-13 10:28
閱讀 4146·2021-07-26 23:57
閱讀 1143·2019-08-30 15:56
閱讀 1409·2019-08-29 13:15
閱讀 1336·2019-08-26 18:18
閱讀 1363·2019-08-26 13:44