最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS對象創(chuàng)建的幾種方式整理

 更新時間:2017年02月28日 15:50:34   作者:小智a  
本文主要介紹了JS對象創(chuàng)建的幾種方式,具有很好的參考價值,下面跟著小編一起來看下吧

最近一直在看JS高級程序設計這本書,有空來梳理一下幾種創(chuàng)建對象的方式。話不多說,直接步入正題。

第一種:Object構造函數創(chuàng)建

var Person = new Object();
Person.name = 'Nike';
Person.age = 29;

這行代碼創(chuàng)建了Object引用類型的一個新實例,然后把實例保存在變量Person中。

第二種:使用對象字面量表示法

var Person = {};//相當于var Person = new Object();
var Person = {
 name:'Nike';
 age:29;  
}

對象字面量是對象定義的一種簡寫形式,目的在于簡化創(chuàng)建包含大量屬性的對象的過程。也就是說,第一種和第二種方式創(chuàng)建對象的方法其實都是一樣的,只是寫法上的區(qū)別不同

在介紹第三種的創(chuàng)建方法之前,我們應該要明白為什么還要用別的方法來創(chuàng)建對象,也就是第一種,第二種方法的缺點所在:它們都是用了同一個接口創(chuàng)建很多對象,會產生大量的重復代碼,就是如果你有100個對象,那你要輸入100次很多相同的代碼。那我們有什么方法來避免過多的重復代碼呢,就是把創(chuàng)建對象的過程封裝在函數體內,通過函數的調用直接生成對象。

第三種:使用工廠模式創(chuàng)建對象

function createPerson(name,age,job){
 var o = new Object();
 o.name = name;
 o.age = age;
 o.job = job;
 o.sayName = function(){
  alert(this.name); 
 };
 return o; 
}
var person1 = createPerson('Nike',29,'teacher');
var person2 = createPerson('Arvin',20,'student');

在使用工廠模式創(chuàng)建對象的時候,我們都可以注意到,在createPerson函數中,返回的是一個對象。那么我們就無法判斷返回的對象究竟是一個什么樣的類型。于是就出現了第四種創(chuàng)建對象的模式。

第四種:使用構造函數創(chuàng)建對象

function Person(name,age,job){
 this.name = name;
 this.age = age;
 this.job = job;
 this.sayName = function(){
 alert(this.name);
 }; 
}
var person1 = new Person('Nike',29,'teacher');
var person2 = new Person('Arvin',20,'student');

對比工廠模式,我們可以發(fā)現以下區(qū)別:

1.沒有顯示地創(chuàng)建對象

2.直接將屬性和方法賦給了this對象

3.沒有return語句

4.終于可以識別的對象的類型。對于檢測對象類型,我們應該使用instanceof操作符,我們來進行自主檢測:

alert(person1 instanceof Object);//ture
alert(person1 instanceof Person);//ture
alert(person2 instanceof Object);//ture
alert(person2 instanceof Object);//ture

同時我們也應該明白,按照慣例,構造函數始終要應該以一個大寫字母開頭,而非構造函數則應該以一個小寫字母開頭。

那么構造函數確實挺好用的,但是它也有它的缺點:

就是每個方法都要在每個實例上重新創(chuàng)建一遍,方法指的就是我們在對象里面定義的函數。如果方法的數量很多,就會占用很多不必要的內存。于是出現了第五種創(chuàng)建對象的方法

第五種:原型創(chuàng)建對象模式

function Person(){}
Person.prototype.name = 'Nike';
Person.prototype.age = 20;
Person.prototype.jbo = 'teacher';
Person.prototype.sayName = function(){
 alert(this.name);
};
var person1 = new Person();
person1.sayName();

使用原型創(chuàng)建對象的方式,可以讓所有對象實例共享它所包含的屬性和方法。

如果是使用原型創(chuàng)建對象模式,請看下面代碼:

function Person(){}
Person.prototype.name = 'Nike';
Person.prototype.age = 20;
Person.prototype.jbo = 'teacher';
Person.prototype.sayName = function(){
 alert(this.name);
};
var person1 = new Person();
var person2 = new Person();
person1.name ='Greg';
alert(person1.name); //'Greg' --來自實例
alert(person2.name); //'Nike' --來自原型

當為對象實例添加一個屬性時,這個屬性就會屏蔽原型對象中保存的同名屬性。

這時候我們就可以使用構造函數模式與原型模式結合的方式,構造函數模式用于定義實例屬性,而原型模式用于定義方法和共享的屬性

第六種:組合使用構造函數模式和原型模式

function Person(name,age,job){
 this.name =name;
 this.age = age;
 this.job = job;
}
Person.prototype = {
 constructor:Person,
 sayName: function(){
 alert(this.name);
 };
}
var person1 = new Person('Nike',20,'teacher');

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • JS仿hao123導航頁面圖片輪播效果

    JS仿hao123導航頁面圖片輪播效果

    這篇文章主要介紹了JS仿hao123導航頁面圖片輪播效果,代碼簡單易懂,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-09-09
  • JS在TextArea光標位置插入文字并實現移動光標到文字末尾

    JS在TextArea光標位置插入文字并實現移動光標到文字末尾

    JS在TextArea光標位置插入文字+移動光標到文字末尾,Firefox,Chrome,Safari以及Opera都有selectionStart和selectionEnd屬性,具體實現如下,感興趣的朋友可以參考下哈
    2013-06-06
  • JavaScript中合并Object的三種基本方法小結

    JavaScript中合并Object的三種基本方法小結

    在開發(fā)過程中,我們經常會遇到合并對象的需求,今天我們就來了解一下合并對象的幾種基本方法,文中通過代碼示例介紹的非常詳細,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • 詳解MVC如何使用開源分頁插件(shenniu.pager.js)

    詳解MVC如何使用開源分頁插件(shenniu.pager.js)

    本文主要分享了shenniu.pager.js整個插件內容,不多且清晰。具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • JS如何在不同平臺實現多語言方式

    JS如何在不同平臺實現多語言方式

    這篇文章主要介紹了JS如何在不同平臺實現多語言方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • MySQL SUM Function函數使用詳解

    MySQL SUM Function函數使用詳解

    這篇文章主要為大家介紹了MySQL SUM Function函數使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • javascript Three.js創(chuàng)建文字初體驗

    javascript Three.js創(chuàng)建文字初體驗

    這篇文章主要為大家介紹了Three.js創(chuàng)建文字初體驗,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • JavaScript輸出所選擇起始與結束日期的方法

    JavaScript輸出所選擇起始與結束日期的方法

    這篇文章主要介紹了JavaScript輸出所選擇起始與結束日期的方法,涉及javascript結合HTML5元素操作日期運算的相關實現技巧,需要的朋友可以參考下
    2017-07-07
  • javascript實現評分功能

    javascript實現評分功能

    這篇文章主要為大家詳細介紹了javascript實現評分功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • js+css簡單實現網頁換膚效果

    js+css簡單實現網頁換膚效果

    這篇文章主要介紹了js+css簡單實現網頁換膚效果的方法,涉及JavaScript響應鼠標事件動態(tài)遍歷及修改頁面元素樣式的相關技巧,需要的朋友可以參考下
    2015-12-12

最新評論

定兴县| 忻州市| 宁化县| 浏阳市| 桐梓县| 邹城市| 嘉义县| 漾濞| 盱眙县| 西吉县| 宣汉县| 梅州市| 凌海市| 随州市| 平遥县| 如皋市| 名山县| 崇信县| 大冶市| 黄陵县| 紫阳县| 龙海市| 富民县| 区。| 浙江省| 大余县| 舞阳县| 铜鼓县| 南京市| 德兴市| 灵丘县| 高碑店市| 大庆市| 清苑县| 旺苍县| 常德市| 临汾市| 潼南县| 萝北县| 巴东县| 日喀则市|