面向對象程序設計有哪些,javascript面向對象思想

 2023-11-30 阅读 33 评论 0

摘要:javascript中的面向對象思想 面向對象 Java編程中萬物皆對象,即所有為外界提供屬性和方法的整體都可以看做對象,而在面向對象編程中,我們只關注對象提供的屬性和方法,而不關注對象本身,所以把代碼塊封裝為一個類對象,不考慮代碼塊內

javascript中的面向對象思想

面向對象
Java編程中萬物皆對象,即所有為外界提供屬性和方法的整體都可以看做對象,而在面向對象編程中,我們只關注對象提供的屬性和方法,而不關注對象本身,所以把代碼塊封裝為一個類對象,不考慮代碼塊內部結構,只考慮它為我們提供的屬性和方法,即為javascript中的面向對象編程
javascript如何做到面向對象oop
學習Java的面向對象思想,我們知道,面向對象的三大特性為繼承,封裝,多態。并且對象的關鍵在于暴露出來的屬性和方法。從這兩個方面可以討論出javascript如何做到面向對象編程。

javascript的封裝,繼承,多態

面向對象程序設計有哪些?Javascript中的函數就是對于功能的一種封裝,函數包括普通函數和構造函數兩類,構造函數是對象創建的基礎。javascript中函數也是對象的一種。封裝即將功能和屬性封裝為一個函數模塊,供外部調用。繼承是從已經存在的對象上,繼承出新的對象。
多態表示在繼承父級對象特性的基礎上擁有不同的表現形式。
舉例來說:數組也是一個對象,數組中的所有方法都是對象方法,數組中的屬性和變量類似,只是屬性是屬于對象的變量。同樣數組中的方法實質也是函數,只是屬于對象。this決定這個方法屬于哪個對象。

模擬Java構建工廠

function creatFaction(name,sex){  
//使用javascript構造函數模擬java對象工廠
this.name=name;
this.sex=sex;                 
this.showName=function(){alert(this.name);                    }
}
//調用工廠函數構建對象舉例:
var p1=new creatFaction('zhangsan','nv');
p1.showName();

javascript面向對象中的原型思想
原型可以類比于css中的class樣式。
給一個對象單獨加方法相當于css中的行間樣式。
使用原型可以為一類對象添加屬性和方法。

 對象名.prototype.方法名=function()

面向對象基本思想,同樣原型相當于Java中的工廠類,工廠并不具有實際功能,只是為了構造對象。原型本身也不提供方法,而是通過原型new出的對象,具有原型中定義的方法。同樣在javascript中的構造函數為new出的對象提供屬性,所以一定意義上說javascript中構造函數即為工廠類(js特有)
綜上所述:在構造函數中添加屬性,在原型中添加方法。可以解決工廠函數兩個問題。因為屬性每個對象都不同,是對象特有(類似行內樣式),用構造函數來設置。但是方法對每個對象都一樣的操作,所以用原型來添加。(類似class里面樣式)

function Faction(name,sex){  
//使用構造函數和原型完整模擬對象工廠
this.name=name;
this.sex=sex;                   
}
Faction.prototype.showName=function(){//方法showName
};

使用json實現面向對象
在javascript中json既可以存儲變量,也可以存儲方法,并且json本身也是一個對象。

      var p={name:'zyv',//屬性six:'nv',show:function(){//方法alert(this.name);}}//調用:p.show();

缺點:不適應于生成大量類似對象(工廠),一個json生成一個對象。
優勢:(命名空間)即json里面的屬性可以是另一個json(json嵌套),這樣可以把不同的屬性和方法按照分支數的形式分別放在json不同分支下,調用時只要多層調用即可(json包json)(同一類的方法包在一個json屬性里面)類似于java中的包

var zong={};zong.caiwu={show1:function(){},show2:function(){}}zong.huodong={ha:function(){},sa:function(){}}//調用:zong.caiwu.show1();

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/188171.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息