JS中的prototype

    技术2022-05-20  51

    学生问了一个问题,整理一下,供大家参考:

    老师你好,请教个问题:

    在js中 定义一个类function hell(){

    }

    然后添加方法:1 、hell.prototype.add = function(){}2、hell.add = function(){}

    1和2 这两种方法有什么区别?

    我的回复:

    概念性的东西我就不贴了,感兴趣的同学百度一下就能找到js官方对于prototype的解释。

    prototype从字面上来理解是原型的意思,也就是说,如果你实例化hell(new hell()),实例化之后的对象调用add方法,调用的就是hell.prototype.add,而hell.add相当于一个静态方法(这个比喻不一定恰当),不需要实例化,直接调用hell.add()就能访问到。我根据你的定义,写了一个例子,你可以参考一下。

     function hell(){ } hell.prototype.add = function(){ alert("hell.prototype.add"); } hell.add = function(){ alert("hell.add"); } var hell1 = new hell(); var hell2 = new hell(); hell1.add(); hell2.add(); hell.add(); hell1.add = function(){ alert("hell1.add"); } hell1.add(); hell2.add(); hell.add();

    当然这个例子可以继续扩充一下,看看实例化之后,更改了hell.prototype.add会有什么结果,这样就能更好的理解prototype,就能清楚什么时候使用prototype,什么时候不用prototype了。

     


    最新回复(0)