簡體   English   中英

如何用Javascript創建OOP類

[英]How to create OOP Class in Javascript

我不願使用任何教程,因為我知道這些教程最終會變成什么樣,並教給您錯誤的處理方法。 我想用Javascript設置一個類,這樣我就可以

var vehicle = new Vehicle(el);
var model = vehicle->getModel();

這些功能將讀取HTML並獲取和管理頁面上的元素。 我目前正在執行類似...的設置

var model = function () {
 return {
  getName: function () {

  },
  getVehicleCount: function () {

  },
  incrementCount: function (id) {
   console.log(x);
  }
 }
}();

我仍在學習Java語言中的類...我希望能夠將所有方法將要使用的元素的節點傳遞給該類,但是我不確定我是否做對了...

JavaScript中沒有類,而是JavaScript中的所有對象都是對象。

要創建一個新對象,您定義一個在其中使用this關鍵字的函數(“構造函數”),然后使用new運算符對其進行調用:

function Foo (id) { // By convention, constructor functions start with a capital letter
    this.id = id;
}

var foo1 = new Foo(1);
var foo2 = new Foo(2);

但是,這些對象沒有方法。 要添加方法,您需要在其構造函數上定義一個原型對象:

Foo.prototype = {
    getId: function () {
        return this.id;
    }
}

這個新的getId函數將對所有Foo對象都可用。 但是,如上所述,JavaScript中沒有類,因此將使用其他構造來產生不同的結果。

我強烈推薦道格拉斯·克羅克福德(Douglas Crockford)的視頻,他在其中解釋了很多javascript OO性質。 可以在這里找到講座:

http://developer.yahoo.com/yui/theater/

Douglas Crockford — JavaScript編程語言

Douglas Crockford —高級JavaScript

這些將使您對javascript的結構有基本的了解,並應有助於從經典編程向函數式編程的過渡。

盡管JavaScript中沒有類,但是您可以創建構造函數。 構造函數通過將方法綁定到對象原型來工作。 有幾種方法可以做到這一點,每種方法都有優點和缺點。 我個人更喜歡最直接的方法,該方法是將方法附加到“ this”上:

var Constructor = function() {

  //object properties can be declared directly
  this.property = "value";

  //to add a method simply use dot notation to assign an anonymous function to an object
  //property
  this.method = function () {
    //some code
  }

  //you can even add private functions here. This function will only be visible to this object methods
  function private() {
    //some code
  }
  //use return this at the end to allow chaining like in var object = new Constructor().method();
  return this; 

}

JavaScript中沒有像類這樣的東西。 JavaScript繼承可用於原型。 您可以看一下base2 ,它模仿了JavaScript中類似類的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM