国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

簡單分析javascript面向對象與原型

2024-05-06 16:20:42
字體:
來源:轉載
供稿:網友

為了說明 JavaScript 是一門徹底的面向對象的語言,首先有必要從面向對象的概念著手 , 探討一下面向對象中的幾個概念:1.一切事物皆對象,2.對象具有封裝和繼承特性,3.對象與對象之間使用消息通信,各自存在信息隱藏

本文主要內容參考來自JavaScript高級程序設計,面向對象與原型章節:

1、工廠模式

ECMAScript 可以通過工廠模式來創建對象:

 

 
  1. //工廠模式 
  2. function createObject(name, age) { 
  3. var obj = new Object(); //創建對象 
  4. obj.name = name; //添加屬性 
  5. obj.age = age; 
  6. obj.run = function () { //添加方法 
  7. return this.name + this.age + '運行中...'
  8. }; 
  9. return obj; //返回對象引用 
  10. }; 
  11. var obj1 = createObject('Lee', 100); //創建第一個對象 
  12. var obj2 = createObject('Jack', 200); //創建第二個對象 
  13. //alert(obj1.run()); //打印第一個對象實例的run()方法 
  14. //alert(obj2.run()); //打印第二個對象實例的run()方法 
  15.  
  16. //alert(typeof obj1); 
  17. //alert(typeof obj2); 
  18. alert(obj1 instanceof Object); //true 
  19. alert(obj2 instanceof Object); //true 

通過工廠模式創建的對象,解決了重復實例化問題,但對象識別問題無法解決(所有對象均是Object),因此要想解決對象識別問題,我們采用下面的構造函數。

2、構造函數

 

 
  1. //構造函數創建 
  2. function Person(name,age){ //所有構造函數對象都是Object 
  3. this.name=name; 
  4. this.age=age; 
  5. this.run=function(){ 
  6. return this.name+this.age+"ing..."
  7. }; 
  8. }; 
  9. var person1=new Person('zhu1',100); 
  10. var person2=new Person('zhu2',200); 
  11. alert(person1.run()); 
  12. alert(person2.run()); 
  13.  
  14. alert(person1 instanceof Object); //ture 
  15. alert(typeof person2); //Person 
  16. alert(person2 instanceof Person); // true 
  17. var person3=new Object(); 
  18. Person.call(person3,'zhu3',300);//對象冒充,person3是Object類型,冒充Person類型 
  19. alert(person3.run());  

構造函數中this:代表當前作用域對象的引用,如果在全局范圍this代表window對象,如果在構造函數體內,就代表當前構造函數所聲明的對象。

構造函數方法,及解決了重復實例化問題,有解決了對象識別問題,對比跟工廠方法不同之處可知:

1.構造函數方法沒有顯示的創建對象(new Object());

2.直接將屬性和方法值賦值給this;

3.沒有return 語句;

4.但是使用構造函數創建必須使用new運算符;

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 北川| 将乐县| 木兰县| 常熟市| 罗山县| 启东市| 武穴市| 东至县| 盐亭县| 沁源县| 瓮安县| 翼城县| 五寨县| 铜鼓县| 贡觉县| 通渭县| 马公市| 乌拉特前旗| 江都市| 宜阳县| 凌海市| 全椒县| 永城市| 竹山县| 多伦县| 鹿泉市| 黄平县| 汾西县| 房山区| 宜黄县| 肥东县| 商河县| 交口县| 彰武县| 临潭县| 阳新县| 汽车| 上思县| 巴楚县| 福鼎市| 酒泉市|