相关疑难解决方法(0)

面向对象的Javascript最佳实践?

我发现自己用Javascript编写了一个大项目.我记得最后一次是冒险,因为hacky JS很快就变得难以理解,我希望这段代码干净利落.

好吧,我正在使用对象来构造一个lib,但是有几种方法可以在JS中定义东西,这意味着在范围,内存管理,名称空间等方面会产生重要影响.EEP:

  • 使用var与否;
  • 在文件中或在(function(){...})()jquery样式中定义事物;
  • 使用this或不使用;
  • 使用function myname()myname = function();
  • 定义对象主体中的方法或使用"原型";
  • 等等

那么在JS中用OO编码时,最佳实践是什么?

学术解释在这里真的很期待.链接到书籍热烈欢迎,只要他们处理质量和稳健性.

编辑:

有一些阅读,但我仍然对上述问题的答案和任何最佳实践非常感兴趣.

javascript oop

251
推荐指数
5
解决办法
6万
查看次数

在JavaScript中定义本地函数:使用var还是不使用var?

在JavaScript中声明本地(内部)函数时,有两个选项:

使用var关键字声明,分配给变量:

(function() {
    var innerFunction1 = function() { ... };
    innerFunction1();
}());
Run Code Online (Sandbox Code Playgroud)

仅使用function关键字声明,而不指定给变量:

(function() {
    function innerFunction2() { ... };
    innerFunction2();
}());
Run Code Online (Sandbox Code Playgroud)

我可以看到第二个的一个优点:函数可以在调用它的代码下面声明,因此更容易将私有函数与实际执行的代码分开.

哪个更好,为什么

javascript closures declaration function

59
推荐指数
2
解决办法
3万
查看次数

Javascript OO语法

似乎有许多不同的方法在JavaScript中执行OO.

我喜欢:

function ClassA(){};
ClassA.prototype={
    someFunc:function(a,b,c){},
    otherFunc:function(){}
}
var c=new ClassA();
Run Code Online (Sandbox Code Playgroud)

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

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

javascript oop

6
推荐指数
2
解决办法
902
查看次数

JavaScript OOP参考方法

早上好,我正在从JavaScript的函数式编程方法转向面向对象的方法,并有一个问题.在函数式编程中,我可以在另一个函数示例中调用函数:

function a(){
    // do something and when done call function b
    b();
}

function b(){ 
    // does more stuff 
}
Run Code Online (Sandbox Code Playgroud)

既然我正在转向OOP方法,我将如何从同一对象中的另一个方法调用对象中的方法.例如:

var myClass = function(){
    this.getData = function(){
        //do a jquery load and on success call the next method
        $('#a').load('file.asp',function(response,status,xhr){
            switch(status){
                case "success":
                    //THIS IS WHERE THE QUESTION LIES
                    this.otherfuntcion();
                break;
            }
        }
    }

    this.otherfunction = new function(){
        // does more stuff
    }
}

p = new myClass();
p.getData();
Run Code Online (Sandbox Code Playgroud)

我可以说this.b()成功调用方法b还是我必须做其他事情?先感谢您.

javascript jquery

1
推荐指数
1
解决办法
92
查看次数

标签 统计

javascript ×4

oop ×2

closures ×1

declaration ×1

function ×1

jquery ×1