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的公共方法
Javascript 是一种与您目前所学的语言不同的语言。您不能指望事情会像更改语言时那样完全一样。
快速浏览:在 JavaScript 中,您可以将函数分配给变量。我敢打赌你使用过的其他语言,这是不可能的:
var myCounter = 1;
var myFunction = function(x){ return x + 1; };
Run Code Online (Sandbox Code Playgroud)
回到你的问题:在 javascript 中没有“真正的类”。只是有物体。我知道一开始这可能听起来令人困惑。
Javascript 的对象模型称为“原型继承”。它与“经典”(双关语)继承不同。而且它的实施也不是很干净。
基本上,您从一组精简的对象(数组、函数、对象等是对象,而不是类)开始,然后使用这些对象来构建其他对象。它们之间的关系可以是“类似类和实例”的关系,但并非必须如此。它们也可以是其他类型的关系。
由于没有类,因此您无法创建它们。但是您可以创建一个常规对象,将其分配给变量 Car,然后想“我将使用这个对象来创建许多其他对象。默认情况下,这些其他对象将具有一些属性,例如方法和东西,让它们表现得像汽车一样”。并且该语言允许您这样做。Car 的行为就像其他语言中的类一样,并且它生成的对象将“像 Car 的实例”。
但对于 javascript 来说,它们看起来就像对象之间存在某种关系。
在某种程度上,原型继承是经典继承的“超集”。你可以做经典继承,也可以做其他事情。