繁体   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