JavaScript可以創(chuàng)建對象嗎

這篇“JavaScript可以創(chuàng)建對象嗎”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“JavaScript可以創(chuàng)建對象嗎”文章吧。

目前成都創(chuàng)新互聯(lián)公司已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計、南豐網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

JavaScript可以創(chuàng)建對象。創(chuàng)建方法:1、用Object直接創(chuàng)建對象,語法“new Object()”;2、用new關(guān)鍵字創(chuàng)建對象,語法“new 對象名()”;3、用JSON創(chuàng)建對象,語法“object={屬性名:屬性值,...}”。

本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

JavaScript無法創(chuàng)建對象嗎

一個JavaScript對象是一個可以保存許多不同值的變量。它充當(dāng)一組相關(guān)數(shù)值的容器。例如,網(wǎng)站的用戶、銀行賬戶中的賬單都可以是JavaScript對象。

在JavaScript中,對象包含了兩種值:屬性和方法。

當(dāng)你創(chuàng)建一個JavaScript對象時,需要定義它的名字,屬性和方法。

創(chuàng)建一個JavaScript對象的方法:

1、利用Object直接創(chuàng)建對象

var myObj=new Object();//使用Object類創(chuàng)建一個空的對象
 
myObj.name="wangshihcheng";
 
myObj.age=20;
 
myObj.infor=function(){
 
document.write("名字:"+this.name);//this.的指向問題
 
document.write("年齡:"+this.age);
 
}
 
myObj.infor();//調(diào)用創(chuàng)建的對象里面的方法;

2、利用new關(guān)鍵字調(diào)用構(gòu)造器創(chuàng)建對象

代碼如下:

<script>
    var obj = new Object();
    obj.name = "Kitty";//為對象增加屬性
    obj.age = 21;
    obj.showName = function () {//為對象添加方法
        console.log(this.name);
    };
    obj.showAge = function(){
        console.log(this.age);
    };
    obj.showName();
    obj.showAge();
</script>

這種方法通過new關(guān)鍵字生成一個對象,然后根據(jù)JavaScript是動態(tài)語言的特性來添加屬性和方法,構(gòu)造一個對象。其中的this表示調(diào)用該方法的對象。

這種方法的問題在于:如果我們需要多次創(chuàng)建對象,那么就需要重復(fù)代碼多次,不利于代碼的復(fù)用。

3、利用原型模式創(chuàng)建對象

在JavaScript中,每個函數(shù)都有一個prototype屬性,它是一個指針,指向一個對象,叫做

原型對象,原型對象包含了可以由特定類型的所有實例對象共享的屬性和方法;

另外,這個對象有一個自帶的屬性constructor,指向創(chuàng)建對象的構(gòu)造方法;

當(dāng)我們使用原型模式時可以使所有的實例共享原型對象的屬性和方法,

從而我們不必要早構(gòu)造函數(shù)中定義對象的實例的信息;

function Student(){
        
 
}
Student.prototype.name="wang";
Student.prototype.sex="man";
Student.prototype.class="5";
Student.prototype.sayName=function(){
    console.log(this.name);
}
 
var s1=new Student();
s1.sayName();//wang
 
var s2=new Student();
s2.sayName();//wang
 
s2.name="shicheng";
s2.sayName();//shicheng

當(dāng)我們讀取某個對象的屬性時,都會執(zhí)行一次搜索,搜索首先從對象實例本身開始,

如果在實例中找到了這個屬性,則搜索結(jié)束,返回屬性的值;

若實例上沒有找到,則繼續(xù)向?qū)ο蟮脑蛯ο笊厦嫜由?,搜索對象的原型對象,若在原型上?/p>

找到這個屬性,則返回原型上面屬性對應(yīng)的值,若沒有找到,則返回undefine;

因此,可以看出,實例對象屬性會覆蓋原型對象上面的屬性;

4、利用JSON創(chuàng)建對象

//object={屬性名1:屬性值1,屬性名2:屬性值2,.....}

//注意JOSN格式中屬性名要加雙引號;

var p={
 
"name":"wangsch",
 
"gender":"man",
 
"age":40,
 
"son":[
 
    {
 
        "name":"son1",
 
        "age":2
 
    },
 
    {
 
    "name":"son2",
 
    "age":5
 
    }
 
],
 
"infor":function(){
 
document.write("父親的姓名:"+this.name+",父親的年齡:"+this.age+"<br>");
 
for( var child in this.son ){
 
document.write("兒子的姓名:"+this.son[child].name+",兒子的年齡:"+this.son[child].age+"<br>");
 
                }
 
        }
 
}
 
p.infor();//調(diào)用對象p中的infor方法

5、組合利用構(gòu)造函數(shù)和原型模式創(chuàng)建對象

構(gòu)造函數(shù)用于定義實例的屬性,原型模式則用于定義方法和共享的屬性;

function Student(name,sex,grade){
    this.name=name;
    this.sex=sex;
    this.grade=grade;
}
 
Student.prototype.sayName=function(){
    console.log(this.name);
}
 
Student.prototype.school="nongda";

這種混合模式可以支持想構(gòu)造函數(shù)傳入?yún)?shù),還極大的節(jié)約了內(nèi)存。

6、利用動態(tài)原型方法創(chuàng)建對象。

代碼如下:

<script>
    function Person(name,age){
        this.name = name;
        this.age = age;
        this.array = new Array("Kitty","luo");
        //如果Person對象中_initialized 為undefined,表明還沒有為Person的原型添加方法
        if(typeof Person._initialized  == "undefined"){
            Person.prototype.showName = function () {
                console.log(this.name);
            };
            Person.prototype.showArray = function () {
                console.log(this.array);
            };
            Person._initialized = true;
        }
    }
  
    var obj1 = new Person("Kitty",21);
    var obj2 = new Person("luo",22);
    obj1.array.push("Wendy");//向obj1的array屬性添加一個元素
  
    obj1.showArray();//Kitty,luo,Wendy
    obj1.showName();//Kitty
    obj2.showArray();//Kitty,luo
    obj2.showName();//luo
</script>

這種方法和構(gòu)造函數(shù)/原型方式大同小異。只是將方法的添加放到了構(gòu)造函數(shù)之中,同時在構(gòu)造函數(shù)Person上添加了一個屬性用來保證if語句只能成功執(zhí)行一次,在實際應(yīng)用中,采用最廣泛的構(gòu)造函數(shù)/原型方法。動態(tài)原型方法也很流行,它在功能上和構(gòu)造函數(shù)/原型方法是等價的。不要單獨使用構(gòu)造函數(shù)和原型方法。

以上就是關(guān)于“JavaScript可以創(chuàng)建對象嗎”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章標(biāo)題:JavaScript可以創(chuàng)建對象嗎
URL地址:http://bm7419.com/article2/jdjoic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站收錄、電子商務(wù)、企業(yè)建站、網(wǎng)站策劃、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)