999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JavaScript 的面向對象語言特性及其程序設計

2019-11-29 14:29:58李勝
科技與創新 2019年6期
關鍵詞:語言方法

李勝

(西南石油大學,四川 成都 610500)

在實際操作過程中,很多程序員熟練掌握各種框架設計,但是對代碼組織卻不盡理想,這是因為很多程序設計人員對JavaScript 的語言特性了解不夠透徹,關于JavaScript面對對象語言特性的參考文獻少之又少,有些文獻提出的JavaScript 面向對象的觀點理解的還有所偏差。基于此,本研究將重點針對如何真正理解JavaScript 面向對象語言特性展開討論,結合JavaScript 自身的特點對其面向對象特性進行分析,以提高程序設計的設計標準。

1 面向對象程序設計的本質

封裝、繼承、多態作為面向對象基本的語言特性,對事物的具體結構進行描述以幫助人們能夠更好地理解知識,將復雜的知識形象化,其中,封裝的本質是為了隱藏信息,將對象的屬性和方法組成整體,通過傳遞消息的方式訪問對象;繼承則是在類的基礎上生成新的類,以實現代碼的操作;多態則是通過調用的方式呈現出不同的對象,讓程序變得更加簡潔。

除了這三類基本的語言特性外,還有對象、屬性、行為和類,這些都是編程語言中的基礎特性。在面向對象的編程思想中,對象的作用非常重要,對象在程序設計語言中是客觀事物的表現形式;屬性是事物的靜態特征;行為是事物的動作;類是將相同屬性的對象進行集合。類更是一種模板,對象則是在類這個模板中所創造出來的產物。

2 JavaScript 與傳統基于類的面向對象比較

在基于類的表達方式中,可以通過類的方式創建多個屬性和行為,然后通過創建出來的屬性和行為對類進行表達,在早期ECMAScirpt 中沒有對類進行闡述,ECMA-262 就是將對象定義成了無序屬性所構成的集合,并且該集合中有基本值和對象。當JavaScript 轉給你包含了數值時,數值可以表示數據,也可以表示函數。當表示數據時,是屬性,反之是行為。這種基于原型的面向對象方法主要是通過構造器的方式對相應的對象進行構造,比如生產機動車,人為制造與機械制造的思維方式肯定有所不同,機械工程師會先將機動車的圖紙設計出來,根據設計原型對制作工藝進行詳細規定,工人們只需要按照圖紙進行生產即可。而使用程序設計如何表示,設計好的圖紙就好似面向對象中的類,而機動車就是這個類中的對象,工人和機器就是利用各種零件將機動車進行制造,制造機動車的零件就是面向對象中的屬性,機器表示函數。

在實際的應用中,任何一個對象的產生都會通過其他已經存在的對象進行結合,從而形成一個構造的結果,單單依靠一張圖紙是無法設計出機動車的。類是一個抽象的概念,而對象是一個實際存在的物體,如果按照最基本的面向對象的原則進行分析,類不僅僅是一個對象。處于原型中的構造器并不會構造出對象,而是通過更加簡單的方式表述對象,讓人們能夠對這個世界報以更加客觀的態度,從而更好地體現出面向對象的思想。在基于類的面相對性的語言中,對象是由一個個單獨的對象組成,而行為和方法都需要通過類進行聲明,讓類獨自擁有。在繼承的過程中,對象有一個從屬關系,子類對象只能繼承父類對象。在基于原型的面向對象語言中,對象包含了行為與屬性,并且能夠同時繼承對象與屬性,也更加符合事物的發展規律。因此,面向對象的編程思想中,可以對類進行使用,同時還可以通過其他的方式對類進行表述。其中,JavaScript 就是一種非常合適的例子,在了解這一觀點后,需要通過實際的案例說明JavaScript 如何實現面向對象的特性。

3 基于JavaScript 的面向對象語言特性的程序設計

3.1 封裝

封裝作為面向對象的重要特性之一,主要的作用是針對開發者,當對象在公布外部接口后會隱藏內部功能,從而起到保護私有數據的作用。JavaScript 既是一種無類的語言,又是一種函數式語言,構造函數需要使用一種新的操作方式創建對象,比如new 操作符,如果調用者沒有使用new 操作符,構造函數會繼續執行程序,并且不會出現報錯。因此,在JavaScript 程序中構造函數的首字母需要是大寫,強制提醒調用者進行使用。針對構造函數中存在的不足,可以使用函數化的形式表示對象,能夠避免操作中可能會出現的隱患,通過閉包的方式隱藏私有成員。通過一個具體的實例討論JavaScript 如何實現封裝特性:

var Book=function(id,name,price){

var num=1;

// 私有方法

function checkId(){};

// 特權方法

this.getName=function(){};

this.setPrice=function(){};

this.getName=function(){};

this.setPrice=function(){};

// 對像公有屬性

this.id=id;

// 對象公有方法

this.copy=function(){};

// 構造器

this.setName(name);

this.setPrice(price);

}

類的內部this 中所定義的屬性和方法能夠被復制,并將類的屬性和方法應用在新的對象中,將其稱為公有化,同時還可以訪問私有的屬性和方法,這種方式就叫作特權方法。可以通過以下方式進行調用:

var book=new Book(11, '設計模式', 50);

console.log(b.num); //undefined

console.log(b.id); //11

3.2 繼承

JavaScript 并不具備繼承的相關含義,同時也沒有對抽象類的參數進行定義,JavaScript 是通過語言的特性實現繼承的功能,JavaScript 支持多重繼承,實現繼承的方式有很多,比如類式繼承、構造函數繼承、組合繼承、原型式繼承、寄生式繼承、寄生組合式繼承、多繼承等。每一個類有三部分組成,構造函數內、構造函數外以及類的原型。類式繼承一般是通過子類的原型而實現的,其中類式繼承主要是通過子類的原型prototype 對象實例化而實現的,如:

function Parent(name){this.name=name; }

Parent.prototype.say=function(){

console.log(this.name+'say');

};

function Child(name){

Parent.call(this, name);

}

Child.prototype.say=function(){

console.log('Child'+this.name+'say');

};

const child=new Child('Ben');

3.3 多態

方法的重載和覆蓋可以實現面向對象的多態性,重載就是可以通過多種不同的方式實現相同的含義,并對參數的類型進行有效的識別,JavaScript 在定義函數時不需要對函數參數的類型進行識別,JavaScript 本身就支持重載。通過對傳遞的參數判斷執行邏輯,實現一種多態處理機制,通過多態類調用add 運算方法,根據不同的參數進行運算。

function Add(){

// 無參數算法

function zero(){

return 0;

}

// 一個參數的算法

function one(num){

return 10+num;

}

// 兩個參數的算法

function two(num1, num2){

return num1+num2;

}

this.add=function(){

var args=arguments;

var len=args.length;

switch(len){

case 0:

return zero();

case 1:

return one(args[0]);

case 2:

return two(args[0], args[1]);

}

}

}

// 實例化

var A=new Add();

console.log(A.add()); //10

console.log(A.add(5)); //15

console.log(A.add(6, 7)); //13

4 結束語

傳統的基于類的面向對象思維具有一定的理解難度,本文通過實例了解了面向對象程序設計,深入分析了面向對象的語言特性和編程,并對面向對象的特性進行了闡述,簡單實用,容易理解,具有非常高的靈活性。

猜你喜歡
語言方法
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
學習方法
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補正之道
累積動態分析下的同聲傳譯語言壓縮
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
我有我語言
捕魚
主站蜘蛛池模板: 国产精品美女免费视频大全| 欲色天天综合网| 久久久久久久久亚洲精品| 久久狠狠色噜噜狠狠狠狠97视色 | 大香伊人久久| 日本在线亚洲| 国产99久久亚洲综合精品西瓜tv| 无码区日韩专区免费系列| 欧美国产日韩在线| 精品欧美日韩国产日漫一区不卡| 丁香亚洲综合五月天婷婷| 国产91精选在线观看| 国产成人综合在线观看| 国产第一色| 国产高清不卡视频| 亚洲欧美日本国产综合在线| 91免费精品国偷自产在线在线| 国产在线拍偷自揄拍精品| 欧美精品亚洲日韩a| 91青草视频| 五月天丁香婷婷综合久久| 欧美性色综合网| 久青草网站| 经典三级久久| 一级毛片在线播放| 国产微拍精品| 一级爱做片免费观看久久 | 成人免费黄色小视频| 日韩黄色在线| 人人91人人澡人人妻人人爽| 国产精品一线天| 精品国产污污免费网站| 国产一级特黄aa级特黄裸毛片| 99re视频在线| 中文字幕乱码中文乱码51精品| 成人av专区精品无码国产| 日韩欧美中文| 欧美成人免费午夜全| 72种姿势欧美久久久久大黄蕉| 爽爽影院十八禁在线观看| jijzzizz老师出水喷水喷出| 狼友视频一区二区三区| 人妻精品久久无码区| 在线精品自拍| 日韩精品成人在线| 国产精品免费入口视频| 高清色本在线www| 国产无人区一区二区三区| 一级毛片高清| 国产成人精品一区二区免费看京| 97视频免费在线观看| 国产乱子精品一区二区在线观看| 2020国产精品视频| 国产福利在线免费| 亚洲欧洲自拍拍偷午夜色| 啪啪啪亚洲无码| 亚洲精品动漫| 91久久偷偷做嫩草影院| 制服丝袜亚洲| 最新国产在线| 又粗又大又爽又紧免费视频| 综合久久久久久久综合网| 五月丁香伊人啪啪手机免费观看| 欧美在线网| 四虎永久免费在线| 成人午夜视频免费看欧美| 8090成人午夜精品| 女人一级毛片| 成人国产精品网站在线看| 91青青视频| 欧美.成人.综合在线| 欧美影院久久| 亚洲,国产,日韩,综合一区| 国产精品尤物在线| 国产精品国产主播在线观看| 亚洲男人在线| 91视频首页| 久久婷婷六月| 视频二区国产精品职场同事| 91免费国产在线观看尤物| 精品国产一区二区三区在线观看 | 91精品免费高清在线|