麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript創建對象的3種方法

2019-11-20 08:36:44
字體:
來源:轉載
供稿:網友

本文為大家分享了js創建對象的多種方法,分享個方法的優劣,具體內容如下

第一種創建對象的方式:

創建JSON對象
推薦使用的場合: 作為函數的參數,臨時只用一次的場景。比如設置函數原型對象。

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

第二種創建對象的方式:

創建一個Object對象

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

以上兩種創建對象方式的缺點:不能作為對象創建的模板,也就是不能用new進行構造新對象。

第三種創建對象的方式:

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

這種創建對象方式解決了前兩種方式的缺點,可以作為對象創建的模板,可以一直復用創建出多個對象。

new運算符的作用:

執行構造函數(new后面的那個函數),在構造函數內部創建一個空對象
把上一部創建的空對象跟構造函數的原型對象進行關聯
然后把this指向當前空對象
在構造函數執行結束后,如果沒有return,把空對象返回給object

new運算符原理

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

第三種方式beta1:

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

繼續升級 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、調用者如果傳遞參數的順序發生變化,那么廢了
問題:2、參數增減都會導致函數聲明變化,調用的地方也可能發生變化。

如何解決:繼續升級 beta3 :

 function Person(option) { //用一個對象把所有參數覆蓋  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  });

繼續優化,把初始化的代碼 放到init函數中

繼續升級 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();

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美成人做爰高潮片免费视频 | 国内精品久久久久久久久久 | 国产一国产一级毛片视频在线 | 国产1区2 | 在线亚州 | 国产精品99久久99久久久二 | 中文字幕国产欧美 | 在线视频 日韩 | 国产免费片 | 日韩在线欧美在线 | 午夜小影院 | 成年人网站视频免费 | 免费久久久 | 国产精品高潮视频 | 欧日韩在线| 精品久久久久久亚洲精品 | 久久精品4 | 欧美日韩亚州综合 | 日韩av官网| 精品一区二区三区免费毛片 | 日韩精品中文字幕在线播放 | 99精品国产一区二区三区 | 国产亚洲精品综合一区91555 | 精品中文字幕久久久久四十五十骆 | 在线看免费观看av | 一级免费特黄视频 | 精品一区二区久久久久 | 国产乱色精品成人免费视频 | 欧美一级免费高清 | 黄色片网站在线播放 | 亚洲午夜视频 | 亚洲综合中文 | 99riav国产在线观看 | 欧美城网站地址 | 一区二区三区国产视频 | www日韩在线| 日本残忍极度灌浣肠视频 | 精品一区二区三区免费毛片爱 | 99riav视频一区二区 | 亚洲综人网 | 国产精品99久久99久久久二 |