免费游戏不用登录直接玩,苹果6s plus,不朽情缘滴血大奖视频,电子pga是什么意思

Javascript 面向?qū)ο缶幊?/h1>
時(shí)間:2020-11-19 16:10:21 JavaScript 我要投稿

Javascript 面向?qū)ο缶幊?/p>

  很長(zhǎng)一段時(shí)間以來(lái)(這里本人要幸災(zāi)樂(lè)禍地說(shuō)),js是“一種點(diǎn)綴的作用,完成很有限的功能,諸如表單驗(yàn)證之類,其語(yǔ)言本身也一直被當(dāng)作過(guò)程化的語(yǔ)言使用,很難完成復(fù)雜的功能。”。但是(這里本人要苦大仇深、痛心疾首地說(shuō)),“而Ajax的出現(xiàn)使得復(fù)雜腳本成為必需的組成部分,這就對(duì) JavaScript 程序設(shè)計(jì)提出了新的要求,很多Ajax應(yīng)用開(kāi)始利用JavaScript面向?qū)ο蟮男再|(zhì)進(jìn)行開(kāi)發(fā),使邏輯更加清晰。事實(shí)上,JavaScript 提供了完善的機(jī)制來(lái)實(shí)現(xiàn)面向?qū)ο蟮拈_(kāi)發(fā)思想!薄

  這里關(guān)于對(duì)象就廢話這么多了。我們都知道面向?qū)ο缶幊痰娜齻(gè)主要特點(diǎn)是:封裝、繼承和多態(tài)。下面就圍繞著這三個(gè)特點(diǎn),記錄一些學(xué)習(xí)心得。

  好的,先從封裝性開(kāi)始介紹,眾所周知,對(duì)象是封裝的最基本單位。封裝防止了程序相互依賴性而帶來(lái)的變動(dòng)影響。面向?qū)ο蟮姆庋b比傳統(tǒng)語(yǔ)言的封裝更為清晰、更為有力。Code is cheap.來(lái)看簡(jiǎn)單的代碼:

  // 定義函數(shù)的方式定義類

  function class1() {

  // 類成員的定義及構(gòu)造函數(shù)

  // 這里class1 既是一個(gè)函數(shù)也是一個(gè)類。作為函數(shù),它可以理解為類的構(gòu)造函數(shù), 負(fù)責(zé)初始化的工作。

  }

  // 使用new操作符獲得一個(gè)類的實(shí)例

  var obj = new class1();

  /* 拋開(kāi)類的概念,從代碼的形式上來(lái)看,class1 就是一個(gè)函數(shù),那么是不是所有的函數(shù)都可以用new來(lái)操作呢?答案是肯定的。

  在JavaScript 中,函數(shù)和類就是一個(gè)概念,當(dāng)new 一個(gè)函數(shù)時(shí),就會(huì)返回一個(gè)對(duì)象。如果這個(gè)函數(shù)中沒(méi)有初始化類成員,那就會(huì)返回一個(gè)空的`對(duì)象。

  事實(shí)上,當(dāng)new一個(gè)函數(shù)時(shí),這個(gè)函數(shù)就是所代表類的構(gòu)造函數(shù),其中的所有代碼都可以看作為了初始化一個(gè)對(duì)象而工作。用于表示類的函數(shù)也稱之為構(gòu)造器。

  在JavaScript 中,每個(gè)對(duì)象可以看作是多個(gè)屬性(方法)的集合

  */

  function test() {

  alert( typeof (obj));

  }

  上面的代碼定義了一個(gè)類class1,這就是js中簡(jiǎn)單的封裝,下面我們看js如何定義“靜態(tài)類”,

  function class1() { // 構(gòu)造函數(shù)

  }

  // 靜態(tài)屬性

  class1.staticProperty = " test " ;

  // 靜態(tài)方法

  class1.staticMethod = function () {

  alert(class1.staticProperty);

  }

  function test() {

  // 調(diào)用靜態(tài)方法

  class1.staticMethod();

  alert( typeof (class1));

  }

  接著看“抽象類”:

  /*

  在傳統(tǒng)面向?qū)ο笳Z(yǔ)言中,抽象類中的虛方法必須先被聲明,但可以在其他方法中被調(diào)用。

  而在JavaScript 中,虛方法就可以看 該類中沒(méi)有定義的方法,但已經(jīng)通過(guò)this 指針使用了。

  和傳統(tǒng)面向?qū)ο蟛煌氖牵@里虛方法不需經(jīng)過(guò)聲明,而直接使用了。這些方法將在派生類

  中實(shí)現(xiàn)

  */

  // 定義extend 方法

  Object.extend = function (destination, source) {

  for (property in source) {

  destination[property] = source[property];

  }

  return destination;

  }

  Object.prototype.extend = function (object) {

  return Object.extend.apply( this , [ this , object]);

  }

  // 定義一個(gè)抽象基類base,無(wú)構(gòu)造函數(shù)

  function base() { }

  base.prototype = {

  initialize: function () {

  this .oninit(); // 調(diào)用了一個(gè)虛方法

  }

  }

  // 定義class1

  function class1() {

  // 構(gòu)造函數(shù)

  }

  // 讓class1繼承于base 并實(shí)現(xiàn)其中的oninit方法

  class1.prototype = ( new base()).extend({

  oninit: function () { // 實(shí)現(xiàn)抽象基類中的oninit 虛方法

  // oninit 函數(shù)的實(shí)現(xiàn)

  }

  });

  我們看到,上面“讓class1繼承于base 并實(shí)現(xiàn)其中的oninit方法時(shí)”,使用了“繼承”的概念,請(qǐng)留意。再來(lái)看一下執(zhí)行的效果:

  function test() {

  var obj = new class1();

  obj.oninit = function () { alert( " test " ); }

  obj.oninit();

  }

【Javascript 面向?qū)ο缶幊獭肯嚓P(guān)文章:

1.面向?qū)ο缶幊痰膉avascript基礎(chǔ)

2.Javascript簡(jiǎn)單實(shí)現(xiàn)面向?qū)ο缶幊汤^承實(shí)例代碼

3.javascript面向?qū)ο笾械膶?duì)象怎么理解

5.javascript的面向?qū)ο蠹夹g(shù)介紹

6.java面向?qū)ο缶幊填}庫(kù)及答案

7.2016年java面向?qū)ο缶幊填}庫(kù)及答案

8.理解Javascript對(duì)象

主站蜘蛛池模板: 阳山县| 临沂市| 云南省| 汉寿县| 锡林郭勒盟| 大姚县| 当涂县| 昌平区| 澄江县| 新巴尔虎左旗| 沿河| 嵊州市| 凭祥市| 开阳县| 张掖市| 长治县| 东至县| 沾化县| 兴业县| 九寨沟县| 蓬莱市| 临沭县| 浦城县| 修水县| 左权县| 黎城县| 五家渠市| 台中市| 泸水县| 改则县| 永新县| 灌云县| 汉沽区| 水城县| 乌拉特后旗| 洪湖市| 齐齐哈尔市| 积石山| 璧山县| 铜陵市| 罗江县|