一尘不染

可以使用哪些技术在JavaScript中定义类,它们的权衡是什么?

javascript

我更喜欢将OOP用于目前正在从事的大型项目中。我需要用JavaScript创建几个类,但是,如果我没记错的话,至少有两种方法可以做到这一点。语法是什么,为什么要用这种方式呢?

我想避免使用第三方库-至少在一开始。
在寻找其他答案时,我找到了文章“ _[使用JavaScript进行面向对象的编程”,第I部分:继承文档JavaScript ,该文章讨论了JavaScript中的面向对象的编程。有更好的继承方法吗?


阅读 254

收藏
2020-04-25

共1个答案

一尘不染

这是不使用任何外部库的方式:

// Define a class like this
function Person(name, gender){

   // Add object properties like this
   this.name = name;
   this.gender = gender;
}

// Add methods like this.  All Person objects will be able to invoke this
Person.prototype.speak = function(){
    alert("Howdy, my name is" + this.name);
};

// Instantiate new objects with 'new'
var person = new Person("Bob", "M");

// Invoke methods like this
person.speak(); // alerts "Howdy, my name is Bob"

现在,真正的答案要复杂得多。例如,JavaScript中没有类。JavaScript使用prototype基于的继承方案。

此外,还有许多流行的JavaScript库,它们具有自己的样式,它们近似于JavaScript中的类功能。您将至少要签出Prototype和jQuery。

确定其中哪一个是“最佳”是在Stack
Overflow上发起一场神圣战争的好方法。如果您正着手进行一个较大的JavaScript大型项目,那么绝对值得学习流行的库并按自己的方式去做。我是一个原型人,但是StackOverflow似乎倾向于jQuery。

至于只有“一种方法”,而没有对外部库的任何依赖,我写的方式就差不多了。

2020-04-25