JS问题,给对象添加属性和给对象的原型添加属性有什么区别?

JS问题,给对象添加属性和给对象的原型添加属性有什么区别?
2025-02-25 15:17:28
推荐回答(3个)
回答1:

假设有对象objece;

var object = function(){
    this.a = 1;
    this.b = 2;
}
然后我 var obj1 = new object();

这里的obj1就是对象,给对象obj1加一个属性 obj1.c = 3;
但是我再var obj2 = new object();这里的obj2并没有c这个属性;

但是我通过原型的方式加属性c; object.prototype.c = 3;
那么我var obj3 = new object();
obj3就有c这个属性

望采纳!

回答2:

object.c=3 只是在这个对象上添加了属性c
object.prototype.c = 3 是在对象原型链上添加了属性c
通过new运算符构造出的实例的原型链指向构造函数的原型链

回答3:

prototype是对类操作的,相当于把Object重构了,变成了有a,b,c三个属性的类,如果没经过重构,直接new一个obj3,就是只是开辟了一个之后两个参数的Object的内存空间,压根没c属性的内存空间,直接给obj3.c赋值会出错的