如下一个构造函数:
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的原型是什么?这个原型是什么,存储在哪里,运行机制是什么?
谢谢!
1、Box()是JS函数,JS函数是JS的一种对象,Box是指向对象的指针。
2、使用prototype给Box()函数添加原型属性,原型属性跟实例属性是完全不同的内容,设置原型属性的目的是为了将同一对象不同实例的公有方法和属性封装起来,以节省内存空间。因此,这些行为的执行在实例化构造函数之前,或者说,不管是否实例化,这些代码都会在后台执行。
3、原型的目的就是为了在实例化同一对象不同时节省内存空间,如果box1、box2的country和race都是一样的,就没必要将这两个属性放在实例化构造函数中进行实例化,因为这样的话box1、box2都各自保存了一份country和race,但它们的内容都一样,这样就浪费了宝贵的系统资源(内存资源),如果实例化了一个对象box,那它的可访问的属性包含两种,一种是实例化属性,在Box构造函数中定义,另一种是原型属性,通过prototype定义,
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。