JS问题,给对象添加属性和给对象的原型添加属性有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS问题,给对象添加属性和给对象的原型添加属性有啥区别?相关的知识,希望对你有一定的参考价值。
JS问题,给对象添加属性和给对象的原型添加属性有什么区别?
假设有对象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这个属性
望采纳!追问
那我给object.c=3
那var obj3 = new object(); obj3不是同样有c这个属性么?
我是想问object.c=3和object.prototype.c = 3
有啥区别
object.c=3这样同样new出来的还是不会有c这个属性
追问果然是这样
憋了好久的疑问终于知道了
能解释一下为什么直接写object.c=3时 new不出来么?
跪谢~!!!!!
object.prototype.c = 3 是在对象原型链上添加了属性c
通过new运算符构造出的实例的原型链指向构造函数的原型链 参考技术B prototype是对类操作的,相当于把Object重构了,变成了有a,b,c三个属性的类,如果没经过重构,直接new一个obj3,就是只是开辟了一个之后两个参数的Object的内存空间,压根没c属性的内存空间,直接给obj3.c赋值会出错的
给对象添加属性和给对象原型添加属性的区别
举个例子:
var
object =
function
(){
this
.a = 1;
this
.b = 2;
}
然后new一个对象
var
obj1 =
new
object();
给对象obj1加一个属性 obj.c = 3;
但是我再
var
obj2 =
new
object();这里的obj2并没有c这个属性;
但是我通过原型的方式加属性c; object.prototype.c = 3;
那么我
var
obj3 =
new
object();
obj3就有c这个属性
以上是关于JS问题,给对象添加属性和给对象的原型添加属性有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章