JavaScript对象-调用而不创建它(如Math对象)
我不熟悉JavaScript对象。我想创建一个类似JavaScript数学对象的对象。但它不起作用(它什么也不返回) 我想创建一个名为Area的对象,并为其提供方法square和rectangle。我想用和数学对象一样的方法来使用它。要找到正方形的面积,我将执行以下操作:JavaScript对象-调用而不创建它(如Math对象),javascript,Javascript,我不熟悉JavaScript对象。我想创建一个类似JavaScript数学对象的对象。但它不起作用(它什么也不返回) 我想创建一个名为Area的对象,并为其提供方法square和rectangle。我想用和数学对象一样的方法来使用它。要找到正方形的面积,我将执行以下操作: var squareArea = Area.square(10); // 100 我选择区域作为示例,因为它很简单 我的脚本如下: <script> window.onload = function() {
var squareArea = Area.square(10); // 100
我选择区域作为示例,因为它很简单
我的脚本如下:
<script>
window.onload = function() {
function Area() {
function square(a) {
area = a * a;
return area;
}
function rectangle(a, b) {
area = a * b;
return area;
}
}
rectangleArea = Area.rectangle(10, 20);
alert(rectangleArea);
}
</script>
window.onload=函数(){
功能区(){
功能广场(a){
面积=a*a;
返回区;
}
函数矩形(a,b){
面积=a*b;
返回区;
}
}
矩形面积=面积。矩形(10,20);
警报(矩形区域);
}
这将创建一个名为区域
的对象,其中包含方法
var Area = {
staticMethod: function() { }
};
除非您希望
Area
可调用,否则不要将其设置为函数。此处要做的是使用指定给它的方法创建一个名为Area
的对象。最简单、最干净的方法是:
var Area = {
square: function(a)
{
return a * a;
},
rectangle: function(a, b)
{
return a * b;
}
};
您现在可以使用所述的
Area.square()
和Area.rectangle()
。您的函数仅在包含函数Area
的范围内。要通过区域
对象访问它们,请将函数设置为区域
的属性:
var Area = {
square: function(a) {
area = a * a;
return area;
},
rectangle: function(a, b) {
area = a * b;
return area;
}
}
rectangleArea = Area.rectangle(10, 20);
alert(rectangleArea);
看起来您正在尝试使用“类”,因为您将Area
作为一个函数。您不需要这样做,因为您不需要多个区域
实例,但如果需要,请执行以下操作:
function AreaClass(){
// just an empty constructor
}
AreaClass.prototype.square = function(a) {
area = a * a;
return area;
}
AreaClass.prototype.rectangle = function(a, b) {
area = a * b;
return area;
}
var Area = new AreaClass();
好的,有很多关于代码的答案,但很少有解释: 通过使
区域
成为函数,您犯了第一个错误-它应该是一个附加了函数的对象
然后,在区域
函数的主体中声明了更多的函数,但是由于它们位于区域
函数内部,因此它们会立即被删除—实际上外部没有可调用的表单
您想要的是制作一个对象:
var Area = {};
然后将函数附加到它:
Area.square = function(var a) {
area = a * a;
return area;
};
等等
这样,您要调用的函数就是区域
对象的属性
或者,您可以在线执行此操作:
var Area = {
square: function(var a) {
area = a * a;
return area;
}
}
作为简单地为方法创建名称空间的替代方法(例如,
var-Area={…}
),您可以向现有类添加静态方法
function Area() { ... };
Area.square = function(a) {
return a * a;
};
了解有关对象的详细信息:。