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

javascript創(chuàng)建對象的3種方法

 更新時(shí)間:2016年11月02日 09:57:46   作者:tclyjy  
這篇文章主要介紹了javascript創(chuàng)建對象的3種方法,對比分析js創(chuàng)建對象三種方式的優(yōu)缺點(diǎn),感興趣的小伙伴們可以參考一下

本文為大家分享了js創(chuàng)建對象的多種方法,分享個(gè)方法的優(yōu)劣,具體內(nèi)容如下

第一種創(chuàng)建對象的方式:

創(chuàng)建JSON對象
推薦使用的場合: 作為函數(shù)的參數(shù),臨時(shí)只用一次的場景。比如設(shè)置函數(shù)原型對象。

 var object = {
  name: "Eric",
  age: 24,
  sayHi: function(){
   console.log("My name is "+ this.name + " this year is " + this.age + "years old.")
  }
 };

第二種創(chuàng)建對象的方式:

創(chuàng)建一個(gè)Object對象

 var object = new Object();
 object.name = "Eric";
 object.age = 24;
 object.sayHi = function(){....};

以上兩種創(chuàng)建對象方式的缺點(diǎn):不能作為對象創(chuàng)建的模板,也就是不能用new進(jìn)行構(gòu)造新對象。

第三種創(chuàng)建對象的方式:

 function Person() {
  this.name = "Eric";
  this.age = 24;
  this.sayHi = function(){
   console.log(this.name);
  }
 }

 var object1 = new Person();
 var object2 = new Person();

這種創(chuàng)建對象方式解決了前兩種方式的缺點(diǎn),可以作為對象創(chuàng)建的模板,可以一直復(fù)用創(chuàng)建出多個(gè)對象。

new運(yùn)算符的作用:

執(zhí)行構(gòu)造函數(shù)(new后面的那個(gè)函數(shù)),在構(gòu)造函數(shù)內(nèi)部創(chuàng)建一個(gè)空對象
把上一部創(chuàng)建的空對象跟構(gòu)造函數(shù)的原型對象進(jìn)行關(guān)聯(lián)
然后把this指向當(dāng)前空對象
在構(gòu)造函數(shù)執(zhí)行結(jié)束后,如果沒有return,把空對象返回給object

new運(yùn)算符原理

第三種方式有個(gè)缺點(diǎn): 對象的內(nèi)部的函數(shù)會在每個(gè)對象中都存一份如果創(chuàng)建的對象非常多的話,那么非常浪費(fèi)內(nèi)存。函數(shù)的行為是所有對象可以共有,不需要每個(gè)對象都保存一份。所以,可以把函數(shù)放到原型中進(jìn)行聲明,那么所有對象都有了公共的函數(shù),而且內(nèi)存中只保留一份。所有的屬性寫到對象的內(nèi)部

第三種方式beta1:

 function Person() {
  this.name = 'Eric';
  this.age = 24;
 }
 Person.prototype = {
  sayHi: function() {
  },
 };

 var object1 = new Person();
 var object2 = new Person();

繼續(xù)升級 beta2 :

 function Person(name,age) {
  this.name = name || "";
  this.age = age || "";
 }
 Person.prototype = {
  sayHi: function() {
  },
 };

 var object1 = new Person(name1,age1);
 var object2 = new Person(name2,age2);

問題:1、調(diào)用者如果傳遞參數(shù)的順序發(fā)生變化,那么廢了
問題:2、參數(shù)增減都會導(dǎo)致函數(shù)聲明變化,調(diào)用的地方也可能發(fā)生變化。

如何解決:繼續(xù)升級 beta3 :

 function Person(option) { //用一個(gè)對象把所有參數(shù)覆蓋
  this.name = option.name || "";
  this.age = option.age || "";
 }
 Person.prototype = {
  sayHi: function() {
  },
 };

 var object1 = new Person({
   name: "Eric",
   age: 24
  });
 var object2 = new Person({
   name: "XXX",
   age: xx
  });

繼續(xù)優(yōu)化,把初始化的代碼 放到init函數(shù)中

繼續(xù)升級 beta4 :

 function Person(option) {
  this._init(option);
 }
 Person.prototype = {
  _init: function (option){
   this.name = option.name;
   this.age = option.age;
  },
  sayHi: function(){
   console.log("HI");
  }
 };

 var object1 = new Person({
   name: "Eric";
   age: 24
  });
 object1.sayHi();

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺析JavaScript 函數(shù)柯里化

    淺析JavaScript 函數(shù)柯里化

    這篇文章主要介紹了JavaScript 函數(shù)柯里化的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • 別了 JavaScript中的isXX系列

    別了 JavaScript中的isXX系列

    我們很容易被漂亮的代碼吸引,也不知不覺的在自己的代碼庫中加入這些。卻沒有冷靜的想過它們的優(yōu)劣。這不,我就收集了一系列形如 是否為……? 的判斷的boolean函數(shù)
    2012-08-08
  • JavaScript刪除數(shù)組元素的方法指南

    JavaScript刪除數(shù)組元素的方法指南

    作為一名前端開發(fā)工程師,我們經(jīng)常需要在 JavaScript 中操作數(shù)組,其中比較常見的操作便是對數(shù)組進(jìn)行元素的添加、刪除和修改。在這篇文章中,我會詳細(xì)介紹JS中所有刪除數(shù)組元素的方法,希望對大家有所幫助
    2023-05-05
  • JavaScript獲取系統(tǒng)自帶的顏色選擇器功能(圖)

    JavaScript獲取系統(tǒng)自帶的顏色選擇器功能(圖)

    JavaScript獲取系統(tǒng)自帶的顏色選擇器功能,這個(gè)是針對IE瀏覽器,所以大家如果想用兼容性更好的代碼,可以查看腳本之家的相關(guān)文章。
    2010-08-08
  • OpenCV.js實(shí)現(xiàn)喬丹動圖素描效果圖文教程

    OpenCV.js實(shí)現(xiàn)喬丹動圖素描效果圖文教程

    這篇文章主要為大家介紹了OpenCV.js實(shí)現(xiàn)喬丹動圖素描效果的圖文教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • JavaScript 參數(shù)中的數(shù)組展開 [譯]

    JavaScript 參數(shù)中的數(shù)組展開 [譯]

    有些時(shí)候,我們需要把一個(gè)數(shù)組展開成多個(gè)元素,然后把這些元素作為函數(shù)調(diào)用的參數(shù).JavaScript中可以使用Function.prototype.apply來實(shí)現(xiàn)這種展開操作,但它不能被應(yīng)用在執(zhí)行構(gòu)造函數(shù)的情況下.本文解釋了什么是展開操作以及如何在使用new運(yùn)算符的同時(shí)進(jìn)行展開操作
    2012-09-09
  • 基于insertBefore制作簡單的循環(huán)插空效果

    基于insertBefore制作簡單的循環(huán)插空效果

    這是一個(gè)基于insertBefore制作簡單的循環(huán)插空效果,實(shí)現(xiàn)的數(shù)字下面循環(huán)插空效果,給需要的朋友分享。
    2015-09-09
  • js跨域和ajax 跨域問題的實(shí)現(xiàn)思路

    js跨域和ajax 跨域問題的實(shí)現(xiàn)思路

    大家都知道js是不能跨域的,但我們有時(shí)候就要這么用,怎么辦呢?辦法總是有的.
    2009-09-09
  • JavaScript實(shí)現(xiàn)猜數(shù)字游戲

    JavaScript實(shí)現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 微信小程序使用Socket的實(shí)例

    微信小程序使用Socket的實(shí)例

    這篇文章主要介紹了微信小程序使用Socket的實(shí)例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09

最新評論

安仁县| 漳平市| 浏阳市| 五寨县| 乐亭县| 社会| 城固县| 汝州市| 吴旗县| 宽甸| 宁明县| 平湖市| 嘉义县| 梓潼县| 安塞县| 丹寨县| 阳朔县| 内黄县| 原平市| 长宁县| 宁都县| 府谷县| 远安县| 泽州县| 四川省| 定南县| 西充县| 出国| 安远县| 广河县| 孟州市| 新巴尔虎左旗| 应用必备| 莱州市| 和硕县| 高阳县| 松江区| 齐河县| 来凤县| 玛曲县| 澎湖县|