亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript對(duì)象

xavier / 761人閱讀

摘要:對(duì)象的分類內(nèi)置對(duì)象原生對(duì)象就是語(yǔ)言預(yù)定義的對(duì)象,在標(biāo)準(zhǔn)定義,有解釋器引擎提供具體實(shí)現(xiàn)宿主對(duì)象指的是運(yùn)行環(huán)境提供的對(duì)象。不過(guò)類型是中所有類型的父級(jí)所有類型的對(duì)象都可以使用的屬性和方法,可以通過(guò)的構(gòu)造函數(shù)來(lái)創(chuàng)建自定義對(duì)象。

對(duì)象

javaScript中的對(duì)象,和其它編程語(yǔ)言中的對(duì)象一樣,可以比照現(xiàn)實(shí)生活中的對(duì)象來(lái)理解。在JavaScript中,一個(gè)對(duì)象可以是一個(gè)多帶帶擁有屬性和類型的實(shí)體。和杯子做一下比較,一個(gè)杯子是一個(gè)對(duì)象,擁有屬性,杯子有顏色、圖案、重量等。同樣,JavaScript也有屬性來(lái)定義它的特征。
方法是關(guān)聯(lián)到某個(gè)對(duì)象的函數(shù),或者簡(jiǎn)單地說(shuō),一個(gè)方法是一個(gè)值為某個(gè)函數(shù)的對(duì)象屬性,定義方法就像定義普通的函數(shù),除了它們必須被賦給對(duì)象的某個(gè)屬性。

對(duì)象的分類

內(nèi)置對(duì)象/原生對(duì)象:就是JavaScript語(yǔ)言預(yù)定義的對(duì)象,在ECMAScript標(biāo)準(zhǔn)定義,有JavaScript解釋器/引擎提供具體實(shí)現(xiàn)

宿主對(duì)象:指的是javaScript運(yùn)行環(huán)境提供的對(duì)象。一般是由瀏覽器廠商提供實(shí)現(xiàn)(目前也有獨(dú)立的JavaScript解釋器/引擎提供實(shí)現(xiàn)),主要分為BOM和DOM

自定義對(duì)象:就是由開(kāi)發(fā)人員自主創(chuàng)建的對(duì)象

Object對(duì)象

Object類型與Array、Math等一樣都是JavaScript的引用類型。不過(guò)Object類型是JavaScript中所有類型的父級(jí)(所有類型的對(duì)象都可以使用Object的屬性和方法),JavaScript可以通過(guò)Object的構(gòu)造函數(shù)來(lái)創(chuàng)建自定義對(duì)象。當(dāng)以非構(gòu)造函數(shù)形式被調(diào)用時(shí),Object等同于new Object()
Object對(duì)象的方法分為自有方法和原型方法兩種:
自有方法
create():指定原型對(duì)象和屬性來(lái)創(chuàng)建一個(gè)新的對(duì)象
getOwnOropertyNames():返回一個(gè)數(shù)組,它包含了指定對(duì)象所有的可枚舉或不可枚舉的屬性名
keys():返回一個(gè)數(shù)組,包含指定對(duì)象的所有自有可遍歷屬性的名稱
原型方法
prototype.hasOwnProperty():返回一個(gè)布爾值,該值指示對(duì)象是否包含指定的屬性

創(chuàng)建對(duì)象

1.對(duì)象的初始化器創(chuàng)建方式
var 對(duì)象名={

屬性名:屬性值,
方法名:function(){
    方法體
}

}

var obj={
    name : "張三",
    age : 20,
    sayMe : function(){
        console.log("我是張三");
    }
}

2.對(duì)象的構(gòu)造函數(shù)方式
利用所有引用類型創(chuàng)建對(duì)應(yīng)的對(duì)象
利用Object作為構(gòu)造函數(shù)創(chuàng)建對(duì)象
var 對(duì)象名 = new Object();
var 對(duì)象名 = Object();

var obj = new Object();
var obj1 = Object();

3.利用Object.create()方法創(chuàng)建對(duì)象

//創(chuàng)建一個(gè)空對(duì)象:var 對(duì)象名 = Object.create(null)
var obj=Object.create(null);
/*當(dāng)前創(chuàng)建的新對(duì)象擁有與obj對(duì)象相同的屬性和方法:
  var 對(duì)象名 = Object.create(obj);
  obj表示另一個(gè)對(duì)象*/
var obj1=Object.create(obj2);

4.創(chuàng)建空對(duì)象

var obj={}
創(chuàng)建方式對(duì)比

Number、String和Boolean
字面量方式創(chuàng)建的是原始類型,構(gòu)造函數(shù)方式創(chuàng)建是引用類型
Array和Object
無(wú)論是字面量方式還是構(gòu)造函數(shù)方式創(chuàng)建的都是引用類型

變量、函數(shù)與對(duì)象

其實(shí)定義的變量就是某個(gè)對(duì)象的屬性,定義的函數(shù)就是某個(gè)對(duì)象的方法
JavaScript中具有一個(gè)全局對(duì)象(Global),僅存在于概念
1.瀏覽器運(yùn)行環(huán)境,BOM中Window(窗口)對(duì)象
2.Node.js運(yùn)行環(huán)境

var obj={
    name:"張三",
    age:20,
    sayMe:function(){
        console.log("我是張三");
    }
}
調(diào)用對(duì)象的屬性
//1.對(duì)象名.屬性名:不適用于復(fù)雜命名的屬性名稱
console.log(obj.name);
//2.對(duì)象名[屬性名]:通用的調(diào)用方式,與數(shù)組類似,適用于復(fù)雜命名的屬性名稱
console.log(obj["name"]);
//訪問(wèn)一個(gè)對(duì)象不存在的屬性,返回undefined
console.log(obj.age);//返回undefined
新增對(duì)象的屬性
//1.對(duì)象名.新的屬性名=屬性值
obj.age=18;
//2.對(duì)象名[新的屬性名]=屬性值
obj["name"]="張三";
修改對(duì)象的屬性
//1.對(duì)象名.已存在的屬性名=屬性值
obj.age=20;
2.對(duì)象名[已存在的屬性名]=屬性值
obj["name"]="李四";
刪除對(duì)象的屬性
1.delete 對(duì)象名.屬性名
delete obj.age;
2.delete 對(duì)象名[屬性名]
delete obj["name"];
檢測(cè)對(duì)象的屬性

1.判斷對(duì)象的屬性是否為undefined

if(obj.age!==undefined){
    console.log("obj對(duì)象的age屬性存在...");
}else{
    console.log("請(qǐng)定義obj對(duì)象的age屬性...");
}

2.判斷對(duì)象的屬性值,先轉(zhuǎn)換為Boolean類型

if(obj.age){
    console.log("obj對(duì)象的age屬性存在...");
}

3.利用in關(guān)鍵字進(jìn)行判斷

if("age" in obj){
    console.log("obj對(duì)象的age屬性存在...");
}else{
    console.log("obj對(duì)象的age屬性不存在...");
}

4.Object類型提供了hasOwnProperty()方法

if(obj.hasOwnProperty("age")){
    console.log("Obj對(duì)象的age屬性存在...");
}else{
    console.log("obj對(duì)象的age屬性不存在...");
}
遍歷對(duì)象的屬性

1.for...in語(yǔ)句

//創(chuàng)建一個(gè)對(duì)象
var obj={
    name:"張三",
    age:20,
    sayMe:function(){
        console.log("我是張三");
    }
}
//for...in語(yǔ)句
for(var objAttr in obj){
    //通過(guò)對(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()方法,只能遍歷可枚舉的屬性

//創(chuàng)建一個(gè)對(duì)象
var obj={
    name:"張三",
    age:20,
    sayMe:function(){
        console.log("我是張三");
    }
}
//Object類型提供了keys()方法
var arr=Object.keys(obj);
for(var v in arr){
    var objAttr=arr[v];
    //通過(guò)對(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()方法,包括不可枚舉的屬性

//創(chuàng)建一個(gè)對(duì)象
var obj={
    name:"張三",
    age:20,
    sayMe:function(){
        console.log("我是張三");
    }
} 
//Object類型提供了getOwnPropertyNames()方法
var arr=Object.getOwnPropertyNames(obj);
for(var v in arr){
    var objAttr=arr[v];
    //通過(guò)對(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ì)象的方法
//創(chuàng)建一個(gè)對(duì)象
var obj={
    name:"張三",
    age:20,
    sayMe:function(){
        console.log("我是張三");
    }
}
//1.對(duì)象名.方法名()
obj.sayMe();
//2.對(duì)象名[方法名]()
obj["sayMe"]();
新增對(duì)象的方法
//創(chuàng)建一個(gè)新的對(duì)象
var obj={
    name:"李四",
    age:20,
    sayMe:function(){
        console.log("我是李四");
    }
}
//1.對(duì)象名.新的方法名=function(){}
obj.sayYou=function(){
    console.log("你是張三");
}
//2.對(duì)象名[新的方法名]=function(){}
obj[sayHe]=function(){
    console.log("他是大王");
}
修改對(duì)象的方法
//創(chuàng)建一個(gè)對(duì)象
var obj={
    name:"張三",
    age:20,
    sayMe:function(){
        console.log("我是張三");
    }
}
//1.對(duì)象名.方法名=function(){}
obj.sayMe=function(){
    console.log("你是李四");
}
//2.對(duì)象名[方法名]=function(){}
obj[sayMe]=function(){
    console.log("你是李四");
}
刪除對(duì)象的方法
//創(chuàng)建一個(gè)對(duì)象
var obj={
    name:"張三",
    age:20,
    sayMe:function(){
        console.log("我是張三");
    }
}
//1.delete 對(duì)象名.方法名
delete obj.sayMe;
//訪問(wèn)對(duì)象中不存在的方法,報(bào)錯(cuò)(TypeError: obj.sayMe is not a function)

//2.delete 對(duì)象名[方法名];
delete obj[sayMe];

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/96916.html

相關(guān)文章

  • JavaScript 闖關(guān)記

    摘要:對(duì)象數(shù)組初始化表達(dá)式,闖關(guān)記之上文檔對(duì)象模型是針對(duì)和文檔的一個(gè)。闖關(guān)記之?dāng)?shù)組數(shù)組是值的有序集合。數(shù)組是動(dòng)態(tài)的,根闖關(guān)記之語(yǔ)法的語(yǔ)法大量借鑒了及其他類語(yǔ)言如和的語(yǔ)法。 《JavaScript 闖關(guān)記》之 DOM(下) Element 類型 除了 Document 類型之外,Element 類型就要算是 Web 編程中最常用的類型了。Element 類型用于表現(xiàn) XML 或 HTML 元素...

    mj 評(píng)論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)?lái)幫助....(據(jù)說(shuō)是阿里的前端妹子寫(xiě)的) this 的值到底...

    blair 評(píng)論0 收藏0
  • JavaScript中的面向對(duì)象(object-oriented)編程

    摘要:對(duì)象在中,除了數(shù)字字符串布爾值這幾個(gè)簡(jiǎn)單類型外,其他的都是對(duì)象。那么在函數(shù)對(duì)象中,這兩個(gè)屬性的有什么區(qū)別呢表示該函數(shù)對(duì)象的原型表示使用來(lái)執(zhí)行該函數(shù)時(shí)這種函數(shù)一般成為構(gòu)造函數(shù),后面會(huì)講解,新創(chuàng)建的對(duì)象的原型。這時(shí)的函數(shù)通常稱為構(gòu)造函數(shù)。。 本文原發(fā)于我的個(gè)人博客,經(jīng)多次修改后發(fā)到sf上。本文仍在不斷修改中,最新版請(qǐng)?jiān)L問(wèn)個(gè)人博客。 最近工作一直在用nodejs做開(kāi)發(fā),有了nodejs,...

    JerryZou 評(píng)論0 收藏0
  • 10分鐘了解Javascript-天碼營(yíng)

    摘要:然后將構(gòu)造函數(shù)的原型設(shè)為,便實(shí)現(xiàn)了對(duì)象繼承。首先,我們定義一個(gè)構(gòu)造函數(shù),并在其中定義一個(gè)局部變量。這里的是局部變量,其作用域仍然存在是閉包現(xiàn)象,而非對(duì)象屬性。 Javascript是動(dòng)態(tài)的,弱類型的,解釋執(zhí)行的程序設(shè)計(jì)語(yǔ)言。 Javascript極其靈活,支持多種程序設(shè)計(jì)范式:面向?qū)ο?、指令式、函?shù)式。JavaSCript最初被用于瀏覽器腳本,現(xiàn)在已經(jīng)是所有主流瀏覽器的默認(rèn)腳本語(yǔ)言。瀏...

    trigkit4 評(píng)論0 收藏0
  • JavaScriptCore全面解析

    摘要:可嵌入動(dòng)態(tài)文本于頁(yè)面,對(duì)瀏覽器事件作出響應(yīng),讀寫(xiě)元素,控制等。年月,發(fā)布了一款面向普通用戶的新一代的瀏覽器版,市場(chǎng)份額一舉超過(guò)。網(wǎng)景將這門語(yǔ)言作為標(biāo)準(zhǔn)提交給了歐洲計(jì)算機(jī)制造協(xié)會(huì)。線程和的并發(fā)執(zhí)行都是線程安全的。后面會(huì)詳細(xì)講解對(duì)象類型的轉(zhuǎn)換。 本文由云+社區(qū)發(fā)表作者:殷源,專注移動(dòng)客戶端開(kāi)發(fā),微軟Imagine Cup中國(guó)區(qū)特等獎(jiǎng)獲得者 JavaScript越來(lái)越多地出現(xiàn)在我們客戶端開(kāi)...

    OnlyMyRailgun 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐 | 01 - 面向對(duì)象JavaScript

    摘要:在中,并沒(méi)有對(duì)抽象類和接口的支持。例如,當(dāng)對(duì)象需要對(duì)象的能力時(shí),可以有選擇地把對(duì)象的構(gòu)造器的原型指向?qū)ο?,從而達(dá)到繼承的效果。本節(jié)內(nèi)容為設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐第一章筆記。 動(dòng)態(tài)類型語(yǔ)言 編程語(yǔ)言按數(shù)據(jù)類型大體可以分為兩類:靜態(tài)類型語(yǔ)言與動(dòng)態(tài)類型語(yǔ)言。 靜態(tài)類型語(yǔ)言在編譯時(shí)已確定變量類型,動(dòng)態(tài)類型語(yǔ)言的變量類型要到程序運(yùn)行時(shí),待變量被賦值后,才具有某種類型。 而JavaScript是一門典型...

    suxier 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

xavier

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<