JavaScript原型变量创建引用
javascript prototype variable creates reference
我是面向对象的javascript的新手,因此这个问题可能非常幼稚。
我有:
RIT.test = (function() {
test.prototype.SRT = {
someInSRT: 5
};
function test() {
}
return test;
})();
我正在做以下工作:
var v1 = new RIT.test();
var v2 = new RIT.test();
v1.SRT.someInSRT = 10;
v1.SRT.someInSRT = 5;
console.log(v1.SRT.someInSRT);
console.log(v2.SRT.someInSRT);
为什么两个 v1 的值。SRT.someInSRT 和 v2.SRT.someInSRT都是5?我想象我正在用"new"创建两个单独的实例。
有人可以建议我更好的方法吗?仅供参考,SRT 必须是一个对象。
将SRT
添加到原型时,将添加对已定义为
{
someInSRT: 5
}
基于此原型的对象的所有新实例都将共享该引用。因此,v1.SRT === v2.SRT
.因此,您对v1.SRT
所做的任何更改都将通过 v2.SRT
;
在这种情况下,您需要的是以下内容:
RIT.test = (function() {
function test() {
this.SRT = {
someInSRT: 5
};
}
return test;
})();
这样,从RIT.test
派生的所有对象都将具有自己独立的SRT
值。
由于您正在创建 RIT.test() 类的 2 个实例,因此它们不能相同。
请考虑以下示例:
var class1 = function(value){
this.number value;
};
class1.prototype.getNumber = function(){
return this.number;
}
var number = new class1(5);
var number2 = new class1();//not value pass to the constructor here...
console.log(number.getNumber());//print 5 because the constructor is reciving a value
console.log(number2.getNumber())//null, since you have not give any value
//since you did not pass any value to the second instance to the constructor
相关文章:
- 在动态创建的元素上获取对特定选择器的引用
- 如何在创建键时引用来自同一对象的键
- 获取对使用Tampermonkey使用javascript创建的元素的引用
- 使用WeakMaps在Javascript中创建常规弱引用
- 如何创建以下数组的克隆而不是引用
- 使用闭包创建原型中引用的私有属性
- 是否可以创建一个对象,该对象是另一个对象的子集,而不会丢失javascript中的引用
- 在javascript/angular中创建播放列表(按值复制数组,但按引用设置嵌套对象)
- 通过动态创建数组名称在单击函数中引用 javascript 数组
- 对使用函数构造函数创建的函数的内部引用
- 我需要引用使用 .get() 创建的数组
- jQuery引用创建的元素
- 为什么可以't在创建新对象时引用旧对象
- 在创建对象的函数中引用var
- 如何从主框架获取对在iframe上创建的对象的引用
- 在Javascript中使用新的引用创建一个新对象 - 不要复制或克隆 -
- Javascript:未捕获类型错误:引用创建的对象时无法调用未定义的方法“add”
- 使用现有对象的引用创建子类对象
- 为DOM元素引用创建常数时间数据结构
- Javascript/jQuery如何引用创建的元素