为什么这样做?清除用作窗体的javascript对象
Why does this work? Clearing a javascript object being used as a form
使用这个javascript对象:
dog = {
owner: 'mike'
food: 'kibbles'
breed: {color: 'brown'
type: 'corgie'
gender:'f'
}
neuter:'y'
spay:'no'
name:'Sparky'
}
我提交了这些数据,然后我想在成功后将其清除。如果我写:
dog = {};
田地里什么也没发生。
但是,如果我将整个对象更改为:
dog.info = {
owner: 'mike'
food: 'kibbles'
breed: {color: 'brown'
type: 'corgie'
gender:'f'
}
neuter:'y'
spay:'no'
name:'Sparky'
}
然后我通过重新初始化对象来清除对象:
dog.info={};
它有效。我正在使用它来清除服务内部的角度形式。有人知道为什么会这样吗?我们一如既往地感谢你的帮助。非常感谢。
这在很大程度上取决于您使用dog
的准确程度,由于您没有提供,我将编写自己的示例。
这与对象存储在变量中的方式有关。举以下例子:
var dog = {name: 'bob'};
var x = dog;
console.log(x.name); // 'bob'
x.name = 'george';
console.log(x.name); // 'george'
console.log(dog.name); // 'george'
dog = {name: 'frank'}; // dog and x now hold two different objects!
console.log(x.name); // 'george'
console.log(dog.name); // 'frank'
当我将x
设置为等于dog
时,x
存储的对象与dog
相同,所以当我修改它时,也修改了dog
。然而,当我用新对象覆盖dog
时,x
仍然包含旧对象,而不是更新为新对象。
通过使用dog.info
而从不重写dog
,您保留了原始对象,因此所有内容仍在引用正在更新的对象。
var dog = {info: {name: 'bob'}};
var x = dog;
console.log(x.info.name); // 'bob'
x.info.name = 'george';
console.log(x.info.name); // 'george'
console.log(dog.info.name); // 'george'
dog.info = {name: 'frank'}; // dog and x still hold the same object.
console.log(x.info.name); // 'frank'
console.log(dog.info.name); // 'frank'
相关文章:
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 如何添加CSS&JavaScript进入Windows窗体应用程序C#.net
- 如何从窗体调用外部javascript方法
- 将C#变量传递给ASP Web窗体中的JavaScript
- Javascript-如何在窗体上方显示数组的值
- MVC:使用Web窗体视图引擎在javascript中迭代Viewbag数组
- 在windowsphone javascript中visted一次后的非活动窗体
- 带Javascript的条件窗体
- 访问子窗体的asp代码隐藏中的javascript window.myvariable
- Javascript显示窗体的隐藏变量
- 在Dynamics窗体中加载多个依赖的javascript web资源
- 在Vanilla Javascript中使用窗体中的对象原型创建多个用户
- 如何将变量对象传递到多个javascript弹出窗体
- 用于向下滑动窗体的Javascript
- 使用母版页通过窗体在 asp.net 中调用 JavaScript 函数
- 从 GridView 执行 Javascript 函数 ItemTemplate“按钮单击”Web 窗体 ASP.NET
- 在 ASP.NET Web 窗体中从 javascript/客户端设置属性背后的代码
- 从 ASP.NET Web 窗体中的服务器端属性创建 JavaScript 条件
- 从窗体中获取值,并使用 JavaScript 将该值插入表中
- 如何在 JavaScript 中设置下拉列表的选定值.“共享点列表”窗体