Javascript OO语法

前端之家收集整理的这篇文章主要介绍了Javascript OO语法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
似乎有许多不同的方法JavaScript中执行OO.

我喜欢:

function ClassA(){};
ClassA.prototype={
    someFunc:function(a,b,c){},otherFunc:function(){}
}
var c=new ClassA();

并且从未使用过超出此功能功能(尽管是一个熟练的OOer).我怀疑这是老式的,因为我经常看到新的闪烁变体,这让我想知道我是否选择了最好的方法.例如,你可以在构造函数方法中创建魔法来创建私有变量和访问器方法,我认为(直到最近)是不可能的.子类化怎么样?我不知道如何实现这一点,但它现在必须具有某种共同模式.

你是怎么做到的,为什么?

解决方法

function foo() {
  var bar = function() { console.log("i'm a private method"); return 1; };
  var iAmAPrivateVariable = 1;

  return {
    publicMethod: function() { alert(iAmAPrivateVariable); },publicVariable: bar()
  }
}

//usage
var thing = foo()

这被称为功能性应用程序,因为您实际上正在利用闭包进行封装(这是在javascript中执行此操作的唯一方法).

一般来说,你不应该在javascript中做OO,因为很多原因,它不是那么好的语言.认为方案有波浪括号和分号,你将开始像专业人士那样编写语言.话虽如此,有时OO更合适.在这些情况下,上述通常是最好的选择

编辑:将继承带入混合

function parent() {
  return { parentVariable: 2 };
}

function foo() {
  var bar = function() { console.log("i'm a private method"); return 1; };
  var iAmAPrivateVariable = 1;

  me = parent();
  me.publicMethod = function() { alert(iAmAPrivateVariable); };
  me.publicVariable = bar();

  return me;
}

这使得事情变得更加复杂,但是在仍然采用OO概念的功能方法(在这种情况下,使用装饰器函数而不是真正的继承)的同时实现了期望的最终结果.我对整个方法的喜欢之处在于,我们仍然按照这种语言的方式处理对象 – 您可以随意附加内容.

EDIT2:

只是想在信用到期时给予信任,这种方法对于doug crockford在Javascript:The Good Parts中的建议略有简化.如果你想把你的js技能提升到一个新的水平,我强烈建议从那里开始.我不认为我从这么小的书中学到了很多东西.

另一个注意事项是,这与你在大多数工作中大部分时间都会看到的情况截然不同,往往很难解释a)发生了什么,以及b)为什么这是一个好主意对同事.

原文链接:https://www.f2er.com/js/154725.html

猜你在找的JavaScript相关文章