为了账号安全,请及时绑定邮箱和手机立即绑定

又是原型的问题?

又是原型的问题?

桃花长相依 2018-11-13 13:13:23
不明白以下两种写法在实质上有什么区别?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);那两者在哪些方面有可比性呢? 求教,谢谢!
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

在内存节约方面有差别

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

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

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


查看完整回答
反对 回复 2018-12-10
  • 1 回答
  • 0 关注
  • 502 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信