![](/img/trans.png)
[英]Can't figure out why my css isn't being changed by my Javascript using Bulma framework
[英]JAVASCRIPT - Why isn't this object changed?
function myFunc(theObject) {
theObject = {make: "Ford", model: "Focus", year: 2006};
}
var mycar = {make: "Honda", model: "Accord", year: 1998};
var x = mycar.make; // returns Honda
myFunc(mycar);
var y = mycar.make; // still returns Honda
为什么myFunc不改变mycar对象?
当您在myFunc
执行theObject = { ... }
,您将创建一个新对象并将其引用分配给局部变量theObject
。 这不会更改原始对象。
要修改原始对象的内容,需要直接修改其属性,如下所示:
theObject.make = 'Ford';
theObject.model = 'Focus';
theObject.year = 2006;
问题已经得到解答,只是为了让它更清晰:
function myFunc(theObject) {
theObject = {make: "Ford", model: "Focus", year: 2006};
}
是类似的(忘记语法,得到消息):
function myFunc(theObject) {
theObject = new TheObject("Ford","Focus",2006);
}
换句话说,引用了参数,但您正在通过构造新对象来更改该引用。
注意:由于Java语法如此受欢迎,我想到了使用类似JAVA的语法,以便在教学目的下解释您正在创建一个全新的实例。 “TheObject”将是该类的名称。
在进行您提供的更改时,Javascript正在修改本地引用而不是原始引用。 SO上的帖子应该有所帮助:
改变这个:
function myFunc(theObject) {
theObject = {make: "Ford", model: "Focus", year: 2006};
}
在这里,您将变量重新分配给新对象。 原始保持不变,因为参数不链接到保存对象的变量。
至:
function myFunc(theObject) {
theObject.make = "Ford";
}
这会更改您传入的对象的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.