面向对象的两种编写方法及差异

Javascript中的对象js作为一种动态语言,在语法上有相当大的自由度,因此它创建了一个函数,并且存在一个N写的情况。

一般来说,在JS中实现OOP有两种方法:

首先:使用这个关键字

1()函数
{
this.onclick =功能(E)
{
对于(var i = 0;i < 1000;i + +)
{
var =新日期();
}
}

}

这。方法可以非常灵活地向对象添加属性和方法,类似于大多数OOP语言,甚至可以在运行过程中添加。

第二种:使用原型关键字

功能clickfunc(E)
{
对于(var i = 0;i < 1000;i + +)
{
var =新日期();
}
}

2()函数
{

}

class2.prototype.onclick = clickfunc;

在这种用法中没有第一种灵活性,但是在一个对象出现之前,在任何时候添加对象的属性和方法也是一样的。

但他们并不平等。相反,我更喜欢第一种方法,因为第一种方法是相对集中的,并且比较容易读懂代码,但是当它们运行时,它们的操作效率是完全不同的。

var =新数组();

功能测试()
{
var =新日期();
对于(var i = 0;i < 10000;i + +)
{
var c =新一班();
/ / total.push(C);
}
var =新日期();
警报(b.gettime -a.gettime()());
}

test2()函数
{
var =新日期();
对于(var i = 0;i < 10000;i + +)
{
var c =新班();
/ / total.push(C);
}
var =新日期();
警报(b.gettime -a.gettime()());
}

第一步是测试执行时间。发现test1()需要142ms test2(),而只需要50ms。在时间效率方面,原型比这更有效。

Javascript的目标是内存占用测试的第二步。的total.push(C)和行的注释去掉,这样的原因是它们添加到阵列防止GC对象时,对象比较。结果表明,差距不是一般的大。第一种方法占用二十或三十米的内存,而第二个只需要超过100 K。
Javascript创建对象
理性原因:
当处理两码,JS解析器,第一类是为每一个对象创建一个单独的方法,增加了存储成本和提高运行时间。二、JS解析器和大部分的OOP编译器是一样的,数据段与段的对象分开存放,为私人数据的对象,是一个复制的每个对象,而这些方法,它是把公共方法的时期,因此可以减少运行时间和内存开销。