例如1
<script>
let obj = function(){};
obj.age = 100;
console.log(obj.age);
</script>
例如2。
let obj2 = function(){
a:"Breaking Benjamin"
};
let obj2 = function(){};
let o = new obj2();
obj2.prototype.age = 100;
console.log(o.age);
在示例1中,我使用的是obj.age = 100,它的输出为100 在示例2中,我使用的是obj2.prototype.age = 100;给出相同的输出100。 那么两者之间有什么区别?我应该使用哪一个?
答案 0 :(得分:0)
因此,在第一个示例中,年龄是在对象级别设置的,只能通过该对象访问。
在第二个示例中,由于原型具有年龄,因此相同类型的另一个对象(obj2)也可以具有相同的年龄。参见下面的示例,
let o2 = new obj2(); // inherits the state from the prototype viz obj2
console.log(o2.age); // outputs 100
换句话说,您是在原型/类级别设置值,这些值可以由同一原型创建的其他对象访问。
答案 1 :(得分:0)
如果使用对象的一个实例对其进行测试,那么它可能并不明显,因此请使用两个对象对其进行测试:
let obj2 = function(){};
let o1 = new obj2();
let o2 = new obj2();
obj2.prototype.age = 100;
console.log(o1.age);
console.log(o2.age);
如果更改原型,则它会对obj2
的所有实例产生影响。
如果仅在o1
上进行更改,那么它仅对o2
起作用:
let obj2 = function(){};
let o1 = new obj2();
let o2 = new obj2();
o1.age = 100;
console.log(o1.age);
console.log(o2.age);
我应该使用哪个?
这取决于用例,但这肯定总是错误的:
let o = new obj2();
obj2.prototype.age = 100;
console.log(o.age);
答案 2 :(得分:0)
在javascript中,当创建对象/函数时,JavaScript引擎向该函数添加了原型属性。此原型属性是一个称为原型对象的对象,默认情况下具有构造函数属性。构造函数属性指向原型对象为其属性的函数。