加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

JavaScript面向对象的两种书写方法以及区别

发布时间:2023-05-27 12:39:59 所属栏目:Asp教程 来源:
导读:javascript中的对象JS作为一种动态语言,在语法上有相当大的自由度,所以造成了一种功能,有N种写法的局面。在JS中实现OOP,一般来说有两种方法:第一种:使用this关键字function Class1(){ this.onclick = funct

javascript中的对象JS作为一种动态语言,在语法上有相当大的自由度,所以造成了一种功能,有N种写法的局面。

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

第一种:使用this关键字

function Class1()

{

    this.onclick = function(e)

    {

        for (var i=0; i < 1000; i++)

        {

            var a = new Date();

        }

    } 

使用this.的方法可以很灵活地给对象添加属性和方法,而且和大部分的OOP语言都相似,甚至在运行中都可以添加。

第二种:使用prototype关键字

function clickFunc(e)

{

    for (var i=0; i < 1000; i++)

    {

        var a = new Date();

    }

function Class2()

Class2.prototype.onclick = clickFunc; 

这种用法上来讲就没有第一种显得灵活。不过在一个对象new出来之前,也是一样可以随时添加一个对象的属性和方法。

可是他们并不是相等的,相对来说,我更喜欢第一种,因为第一种方法相对比较集中,比较容易阅读代码。但是在运行的时候,他们运行的效率却差别相当地大。以下让我们看一下测试代码吧:

var total = new Array(); 

function Test1()

{

    var a = new Date();

    for (var i=0; i < 10000; i++)

    {

        var c = new Class1();

        //total.push(c);

    }

    var b = new Date();

    alert(b.getTime()-a.getTime());

function Test2()

{

    var a = new Date();

    for (var i=0; i < 10000; i++)

    {

        var c = new Class2();

        //total.push(c);

    }

    var b = new Date();

    alert(b.getTime()-a.getTime());

第一步作执行时间的测试:发现Test1()需要142ms,而Test2()仅需50ms.发现时间效率上来说,prototype的方法相对this来说,更加高效。 

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章