开发者社区> 问答> 正文

关于javascript构造函数的一些问题

如下一个构造函数:

 function Box(name, age){
     this.name = name;
     this.age = age;
     this.method = function(){
            return 'hello';
        };
 }

 var box = new Box('programmer', 25);

1、Box是什么?是对象还是对象引用?
2、如果使用prototype给Box继续添加属性如:
`Box.prototype.country = 'China';
Box.prototype.race = 'Han';`
那么,这些行为的执行是在实例化构造函数之前,还是之后?或者说,不管是否实例化,这些代码会自动在后台自动执行?
3、能否形象地解释一些,原型对象的理解?比如根据构造函数Box,实例化了一个对象box,那么box的原型是什么?这个原型是什么,存储在哪里,运行机制是什么?
谢谢!

展开
收起
小旋风柴进 2016-03-19 08:56:42 2232 0
1 条回答
写回答
取消 提交回答
  • 1、Box()是JS函数,JS函数是JS的一种对象,Box是指向对象的指针。
    2、使用prototype给Box()函数添加原型属性,原型属性跟实例属性是完全不同的内容,设置原型属性的目的是为了将同一对象不同实例的公有方法和属性封装起来,以节省内存空间。因此,这些行为的执行在实例化构造函数之前,或者说,不管是否实例化,这些代码都会在后台执行。
    3、原型的目的就是为了在实例化同一对象不同时节省内存空间,如果box1、box2的country和race都是一样的,就没必要将这两个属性放在实例化构造函数中进行实例化,因为这样的话box1、box2都各自保存了一份country和race,但它们的内容都一样,这样就浪费了宝贵的系统资源(内存资源),如果实例化了一个对象box,那它的可访问的属性包含两种,一种是实例化属性,在Box构造函数中定义,另一种是原型属性,通过prototype定义,

    2019-07-17 19:07:08
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载