亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript如何創建對象

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

JS是基于對象的語言,可以使用面向對象思想模擬JAVA|C++之類的面向對象語言。
 •面向過程
◦關注解決問題的步驟

 •面向對象
◦關注的是解決問題的所需要的對象(內容和角色),然后根據業務邏輯按一定規則調用相關方法

對象分為系統對象和自定義對象兩種。我們可以通過調用系統構造函數來創建出系統對象,如:array|date等。自定義對象必須自己創造,無法利用系統函數來創造。

javascript創建對象 

一、直接創建

 //直接創建     //JS創建對象     //1:創建空對象         var person1 = new Object();     //2:將該對象所需要的屬性、方法加進去         person1.name ="ailer" ;         console .log(person1.name);         person1.gender = "male";     //3:該對象添加的方法|(函數)         person1. manager= function (){           console .log("Ailer is my English name" );        }     //4:調用對象方法:對象.方法名();         person1.manager();     //函數|方法?函數屬于對象時,該函數屬于這個對象下的方法;通過方法名來調用該函數;     //變量|屬性 ?當變量屬于某一個對象時候, 該變量就是這個對象下的方法。通過屬性名來調用變量。      //增         person1.age ="6" ;      //改         person1.name ="lemon" ;      //查         console .log(person1.name);     //刪         delete person1.age;         console .log(person1.age);==> undefined      //引用類型,存儲的是地址      //基本類型:存儲的是值 標志位     /*  var arr1 = [1,2,3,4]        var arr2 = [5, 6, 7,9];        var arr2 = arr1;//        arr2[0]=10;//更改arr2里面的值,arr1也更改        alert(arr1[0]);//====>10 引用類型*/        var per2 = new Object();        per2.name = "Relia";        per2.age = "18";        per2.gender = "femal";        per2.hobby = "lemons";         //1:通過.(點語法)訪問屬性         //2:通過[](方括號)訪問對象的屬性;方括號中必須是屬性字符串或保存屬性字符串的變量|遍歷屬性的時候才使用方括號         var n = "name"         //console.log(per2["name"]);//雙引號         console .log(per2[n]);         for ( var property in per2) {//          console.log(per2[property]);         }

雖然直觀,但是創建多個對象的時候,代碼冗余

二、使用函數創建(工廠模式)

為了解決多個類似對象聲明的問題,我們可以使用一種叫做工廠模式的方法,這種方法就是為了解決實例化對象產生大量重復的問題。

//定義構造函數       function createPerson ( name, age) {//創建一個新的空對象           var person = new Object;//添加屬性|方法           person.name = name;           person.age = age;           person. manager = function() {              console .log("ai" );           }//返回           return person;        }         var per1 = createPerson( "ailer", 12 );         console .log(per1.name);        var per2 = createPerson( "lemon", 23 );        console .log(per2.age);        console.log(per2 instanceof Object);//true        console.log(per2 instanceof createPerson);//false//無法區分該對象類型        console.log(per2.manager==per1.manager);//false 可得出per1和per2各自開閉空間

優:批量創建同類實例
缺:實例用同類屬性, 造成內存浪費無法公,且無法區分該對象的類型

三、 字面量創建

優:簡單直接
缺:無法批量構建同類對象

//字面量創建的對象使用constructor屬性不會指向實例,而是指向object //使用字面量創建       var per1 = {        name:"Ailer",         constructor:per1,        age:12,        gender:"female",        hobby:"play",        eat:function(){          console.log(this.name);        }       }       per1.eat();//ailer       per1.name="lemon";       per1.eat();//lemon       console.log(typeof per1);//Object       console.log(per1.constructor==Object);//true

 四、new+構造函數

//構造函數創建對象,其子對象用instanceof不識別,所有采用new+obj創建        //對象識別了,但是仍然浪費一些代碼區;==>產生原型創建        //創建js對象 new+構造函數        //1:創建構造函數 |通常首字母大寫        function CreatePerson( name , age){          //2:把對象的屬性|方法掛靠在this指針身上, 當調用該函數創建對象時,this指針就指向這個新對象;          //這個this就添加給這個對象          this.name = name;          this.age = age;          /*this.speak = function(){            //此處this也指向創建對象            console.log(this.name+" hello");          }        }      /* CreatePerson.prototype.gender = "20";       CreatePerson.prototype. ea = function(){          console .log(this.name+ "sfd" );       }*///      __proto__:是:實例對象中的原型屬性, 指向對應構造函數對應的原型對象//      [[prototype]]        //調用        var per1 = new CreatePerson( "ailer", "20" );        var per2 = new CreatePerson( "relia", "18" );        console .log(per1 instanceof CreatePerson); //==true        console .log(per2 instanceof CreatePerson); //==>true        console .log(per1.speak== per2.speak); //==false說明系統開辟了兩個不同的代碼區,造成了內存浪費.

字面量創建一個比較方便,所以產生構造函數,普通構造函數(工廠模式),子對象instanceof不識別且內存浪費,用new+構造函數,子對象識別了,但仍有部分代碼重復,內存浪費,產生原型代碼解決。

五、原型模式

      function CreateAnimal(name, age) {        //1.2:把外部參數綁定實例屬性        this.name = name;        this.age = age;      }      //1.3把相同的屬性,綁定在原型上(原型屬性,原型方法)      CreateAnimal.prototype.gender = "male";      CreateAnimal.prototype.style = function() {        console.log(this.name + " ailers");      };      //2:調用構造函數創建對象      var cat1 = new CreateAnimal("xiaohua", "2");      var cat2 = new CreateAnimal("xiaohua", "2");      cat1.style();      console.log(cat1.style==cat2.style);//方法引用地址一樣,將屬性放到原型對象中,節約地址      //instanceof可以來判斷對象屬于哪一個【函數】      //constructor 建造者 也可以用來判斷對象屬于哪個【構造函數】 【?!?      //實例對象保存一個 constructor屬性指向它的構造函數      //instanceof and constructor 區別      console.log(cat1 instanceof CreateAnimal);//true      console.log(cat1 instanceof Object);//true      console.log(cat1.constructor == CreateAnimal);//true      console.log(cat1.constructor == Object); //==false      //構造函數的原型也有constructor屬性指會構造函數      console.log(CreateAnimal.prototype.constructor == CreateAnimal);//true      //in判斷該屬性是否存在這個對象中,這個屬性為實例屬性或原型 //           alert("name" in cat1)//true//           alert("gender" in cat1);//true      //hasOwnProperty:來判斷某一個屬性到底是實例屬性,還是繼承自原型屬性 if 是 為true, else不存在|不是返回false;      console.log(cat1.hasOwnProperty("aaa"));//false 不存在的屬性返回為false      console.log(cat1.hasOwnProperty("name"));//true 實例屬性      console.log(cat1.hasOwnProperty("style"));//false 原型屬性返回為false      //遍歷屬性找原型屬性      //判斷參數是否為原型屬性  工具類      console.log(isPrototype("gender", cat1));//true      function isPrototype(proString, obj) {        if(proString in obj) {          if(!obj.hasOwnProperty(proString)) {            return true;          } else {            return false;          }        } else {          return false;        }      }      /*function isProperty(object, property) {//判斷原型中是否存在屬性   return !object.hasOwnProperty(property) && (property in object);}*/

動態原型模式

//構造函數中初始化原型function per(name, age, gender) {        this.name = name;        this.age = age;        this.gender = gender;        //只在初始化原型的時候執行一次        if(typeof this.sayName != "function") {          Person.prototype.sayName = function() {            alert(this.name);          }        }      }

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费看吃奶视频网站| 国产精品久久久久久久久免费看| 国产美女扒开尿口久久久| 国产69精品久久久| 日韩精品视频在线免费观看| 亚洲夜晚福利在线观看| 欧美在线视频a| 欧美视频一二三| 国产69精品99久久久久久宅男| 亚洲一区亚洲二区| 国产精品旅馆在线| 97在线免费观看| 日韩最新av在线| 亚洲香蕉伊综合在人在线视看| 伊人精品在线观看| 国产在线98福利播放视频| 成人福利免费观看| 亚洲欧美国产视频| 欧美视频国产精品| 国产999精品久久久影片官网| 欧美在线免费观看| 欧美精品videosex牲欧美| 日韩美女视频中文字幕| 日韩欧美亚洲范冰冰与中字| 成人乱色短篇合集| 亚洲乱码国产乱码精品精天堂| 精品国产91乱高清在线观看| 久久久久久亚洲精品不卡| 亚洲激情第一页| 国产高清在线不卡| 九九热99久久久国产盗摄| 国产日韩欧美电影在线观看| 97婷婷大伊香蕉精品视频| www国产精品视频| 精品久久久久久久大神国产| 国产精品久久久久7777婷婷| 亚洲国产日韩欧美在线99| 国产精品视频一区国模私拍| 亚洲精品www| 国产欧美精品一区二区| 精品久久久久久中文字幕一区奶水| 久久久999成人| 久99久在线视频| 亚洲人成亚洲人成在线观看| 欧美极品少妇xxxxⅹ免费视频| 欧美激情视频在线| 亚洲热线99精品视频| 亚洲精品久久久久久久久久久久久| 成人激情黄色网| 欧美黑人巨大xxx极品| 亚洲字幕在线观看| 国产原创欧美精品| 黄色一区二区在线观看| 亚洲欧美制服丝袜| 国产精品第一第二| 亚洲欧美变态国产另类| 国产精品视频免费观看www| 欧美精品情趣视频| 国产aⅴ夜夜欢一区二区三区| 欧美激情成人在线视频| 夜夜狂射影院欧美极品| 91日韩在线视频| 久久久久这里只有精品| 久久色精品视频| 欧美激情视频免费观看| 国产日韩在线一区| 中文一区二区视频| 成人网页在线免费观看| 亚洲男人天堂手机在线| 国产精品视频中文字幕91| 精品色蜜蜜精品视频在线观看| 97婷婷涩涩精品一区| 亚洲欧洲中文天堂| 精品毛片网大全| 国产精品毛片a∨一区二区三区|国| 久久99精品视频一区97| 欧美日韩福利电影| 97婷婷大伊香蕉精品视频| 日韩最新av在线| 欧美最猛性xxxxx免费| 亚洲综合社区网| 亚洲人精品午夜在线观看| 国产午夜精品全部视频播放| 亚洲va久久久噜噜噜| 高跟丝袜一区二区三区| 亚洲理论在线a中文字幕| 国产欧美一区二区三区久久| 国产精品美女主播在线观看纯欲| 亚洲国产99精品国自产| 欧美精品免费播放| 国产极品精品在线观看| 少妇久久久久久| 91国产美女视频| 91高清在线免费观看| 国产精品午夜国产小视频| 91大神福利视频在线| 国产日韩精品综合网站| 欧美一级片一区| 亚洲欧美一区二区精品久久久| 久久久久久亚洲| 欧美国产日韩中文字幕在线| 亚洲成色777777女色窝| 成人网中文字幕| 91精品国产高清自在线看超| 亚洲社区在线观看| 91精品国产91久久久久久吃药| 一色桃子一区二区| 欧美日韩另类字幕中文| 91精品国产高清自在线看超| 日本一区二区三区在线播放| 夜夜嗨av一区二区三区免费区| 97视频在线观看播放| 亚洲片在线观看| 欧洲s码亚洲m码精品一区| 国产精品一区二区av影院萌芽| 亚洲精品福利免费在线观看| 九九精品在线观看| 国产精品亚洲аv天堂网| 国产日韩在线视频| 精品一区二区三区四区| 久久国产精品久久久久| 日韩欧美在线视频日韩欧美在线视频| 亚洲片国产一区一级在线观看| 国产日韩视频在线观看| 91成人在线播放| 成人在线视频网| 伦伦影院午夜日韩欧美限制| 中文字幕av日韩| 55夜色66夜色国产精品视频| 欧美日韩亚洲高清| 久久五月天色综合| 欧美性猛交丰臀xxxxx网站| 自拍偷拍免费精品| 成人免费高清完整版在线观看| 国产91ⅴ在线精品免费观看| 亚洲一区二区久久久| 高清欧美性猛交| 中文字幕日韩电影| 国产成人精品一区二区在线| 国产成人一区二区| 97超级碰碰碰久久久| 精品国产一区二区在线| 亚洲午夜女主播在线直播| 欧美日韩在线观看视频小说| 国产午夜精品全部视频播放| 国产精品夜色7777狼人| 国产精品久久久久久久久影视| 清纯唯美日韩制服另类| 狠狠色狠狠色综合日日小说| 欧美电影免费看| 亚洲免费电影在线观看| 国产91精品在线播放| 国产精品一区二区久久国产| 亚洲欧美日韩久久久久久| 欧美日韩日本国产| 欧美在线亚洲一区| 亚洲香蕉成视频在线观看| 孩xxxx性bbbb欧美| 日韩网站免费观看| 成人激情视频在线观看| 日韩电影大全免费观看2023年上| 美乳少妇欧美精品| 久久精品国产电影| 国产欧美精品在线播放|