当前位置: 首页 > 面试题库 >

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

廉高邈
2023-03-14
问题内容

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

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


问题答案:

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

// 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。

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



 类似资料:
  • 问题内容: 即使在不同的浏览器中,此代码也始终有效: 但是,我找不到关于为什么它应该起作用的单一参考。我首先在John Resig的演示文稿中看到了这一点,但仅被提及。那里或任何地方都没有解释。 有人可以启发我吗? 问题答案: 该声明是魔术,使它的标识符在代码块*中的任何内容执行之前就被绑定了。 这与带有表达式的赋值不同,后者以正常的自上而下的顺序求值。 如果将示例更改为说: 它将停止工作。 函数

  • 前端的知识点是零碎的,中高阶前端开发人员能做哪些技术项目,提高自己的抽象和架构层次呢?

  • 问题内容: 哪些技术可以有效地应用于提高SQL查询的性能?是否有适用的一般规则? 问题答案: 使用主键 避免选择* 建立条件语句时要尽可能具体 去标准化通常可以更有效 表变量和临时表(如果有)通常会比使用大型源表更好 分区视图 使用指标和约束

  • 假设有一个类人 当我创建一个Person类的bean时,我需要一个Person bean具有地址属性,该属性具有value street作为“Baker Lane”。是否可以在Person类中使用autowire来实现这一点或者根本无法实现? 顺便说一下,这是一个面试问题

  • 考虑这两个Python文件: 人们会期望他们做完全相同的事情。但他们没有! 为什么的定义可以访问全局范围,而不能访问的范围? 为什么应该工作,而不应该工作?这是一个设计决策,还是CPython未定义的行为? 在计算类变量的值时,哪些变量/作用域可以访问的一般规则是什么?我什么时候应该考虑允许在定义类变量时使用哪个范围

  • 请问一下什么是stub types definition, 它的好处是什么?我们应该如何定义使用?