如何在Javascript中创建OOP类

Web*_*net 1 javascript oop

我对使用任何教程犹豫不决,因为我知道这些教程最终会如何,教会你做坏事的方法.我想在Javascript中设置一个类,这样我就可以做到

var vehicle = new Vehicle(el);
var model = vehicle->getModel();
Run Code Online (Sandbox Code Playgroud)

这些函数将读取HTML并获取和管理页面上的元素.我现在做的设置就像......

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

  },
  getVehicleCount: function () {

  },
  incrementCount: function (id) {
   console.log(x);
  }
 }
}();
Run Code Online (Sandbox Code Playgroud)

我还在学习Javascript中的类......我希望能够为所有方法将使用的元素传递一个节点,但我不确定我是否正确...

小智 5

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);
Run Code Online (Sandbox Code Playgroud)

但是,这些对象没有方法.要添加方法,需要在构造函数上定义原型对象:

Foo.prototype = {
    getId: function () {
        return this.id;
    }
}
Run Code Online (Sandbox Code Playgroud)

getId所有Foo对象都可以使用这个新功能.但是,如上所述,JavaScript中没有类,因此您将使用其他结构来生成不同的结果.

我强烈推荐道格拉斯·克罗克福德(Douglas Crockford)的视频,其中他解释了大部分的jO OO性质.会谈可以在这里找到:

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

Douglas Crockford - JavaScript编程语言

Douglas Crockford - 高级JavaScript

这些将使您对javascript的结构有一个基本的了解,并且应该有助于从经典编程到函数编程的过渡.