JavaScript OOP类和声明

Ben*_*awk 5 javascript oop jquery

我发现在javascript中很难掌握OOP.

通常我希望必须创建一个类,然后从该类创建对象.

但是,根据一个教程,以下是一个对象.

var egg = {}
Run Code Online (Sandbox Code Playgroud)

我是不是在没有实际上课的情况下制作了一个名为egg的对象.

如果是这样的话,我将如何从一个对象中创建多个对象:S

另外根据不同的教程,对象如下所示,这与我上面所说的完全不同:S

var Block = function(){

}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解开我的困惑:(

Dec*_*wer 13

以上两个例子都是正确的.简单地说,javascript中的所有内容都是一个对象.课程不存在,但有很多方法可以模仿它们.我最喜欢的方法如下:

    var myClass = function() { <----------------------------- class declaration

            var prop1,   
                prop2,   <------------------------------------ private properties
                prop3;

            var addMe = function( arg1, arg2 ) { <------------ private method
                var result = arg1 + arg2;
                return result;
            }

            var obj = { <------------------------------------- constructor method 
                Prop1: prop1,
                Prop2: value2,  <----------------------------- public properties
                Prop3: value3,

                Method: function() { <------------------------ public method
                    obj.prop3 = obj.prop1 + obj.prop2;   
                    return obj.prop3;
                }
            }

            obj.Prop4 = addme( prop1, prop2 ); <-------------- public property set 
                                                               with the private method
            return obj;
    }

    var myClassObj = new myClass;
Run Code Online (Sandbox Code Playgroud)

myClassObj现在是myClass的一个对象,它有四个公共属性Prop1,Prop2,Prop3,Prop4和一个名为Method的公共方法


kik*_*ito 3

Javascript 是一种与您目前所学的语言不同的语言。您不能指望事情会像更改语言时那样完全一样。

快速浏览:在 JavaScript 中,您可以将函数分配给变量。我敢打赌你使用过的其他语言,这是不可能的:

var myCounter = 1;
var myFunction = function(x){ return x + 1; };
Run Code Online (Sandbox Code Playgroud)

回到你的问题:在 javascript 中没有“真正的类”。只是有物体。我知道一开始这可能听起来令人困惑。

Javascript 的对象模型称为“原型继承”。它与“经典”(双关语)继承不同。而且它的实施也不是很干净

基本上,您从一组精简的对象(数组、函数、对象等是对象,而不是类)开始,然后使用这些对象来构建其他对象。它们之间的关系可以是“类似类和实例”的关系,但并非必须如此。它们也可以是其他类型的关系。

由于没有类,因此您无法创建它们。但是您可以创建一个常规对象,将其分配给变量 Car,然后想“我将使用这个对象来创建许多其他对象。默认情况下,这些其他对象将具有一些属性,例如方法和东西,让它们表现得像汽车一样”。并且该语言允许您这样做。Car 的行为就像其他语言中的类一样,并且它生成的对象将“像 Car 的实例”。

但对于 javascript 来说,它们看起来就像对象之间存在某种关系。

在某种程度上,原型继承是经典继承的“超集”。你可以做经典继承,也可以做其他事情。