javascript - 又是原型的问题?

查看:86
本文介绍了javascript - 又是原型的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

不明白以下两种写法在实质上有什么区别?

function Person() {
}

Person.prototype.age = function(n) {
    return n;
}
var person = new Person();
person.age(9);

上面这种写法是通过原型,让实例化后的对象能够调用父类的函数。

下面这种方式不通过原型,但是在用法上完全一样。

function Person() {
    this.age = function(n) {
        return n;
    }
}
var person = new Person();
person.age(9);

那两者在哪些方面有可比性呢? 求教,谢谢!

解决方案

在内存节约方面有差别

  • 第一种方式,prototye定义,所有后代都共享一个方法定义,内存中只有占一个空间,无论你创建了多少实例,所有实例的age方法都指向这个内存地址。

  • 第二种方式,在构造函数内定义,每创建一个实例,age方法的定义就会分配一个空间,属于该实例专用。实例创建多了,内存成比例增长。

综上,如果是共有的方法,请放到prototype中。

这篇关于javascript - 又是原型的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆