如何在创建对象时设置属性属性
How To Set a Property's Property While Creating the Object
我有一个对象,其中一个属性是数组。我想在这个数组上设置一个新的属性(customProp = 0).然而,我想在myObject的声明中这样做。
myObject = {
someString: "text",
someArray: ["one","two"],
/* What I've Tried */
someArray: { customProp: 0 } // Overwrites my array with a new object
someArray["customProp"]: 0 // Invalid syntax
someArray: customProp: 0 // Also invalid
}
如果我不能创建数组,然后在它上设置属性,我能一下子做到吗(再次,保持在这个对象的范围内)?
我有另一个(小)问题:我如何引用仍然在声明中的属性之一。我想设置otherProp = someString,怎么做呢?
myObject = {
someString: "text",
otherString: someString, // someString is undefined
otherString: myObject["someString"], // myObject is undefined
otherString: this["someString"] // Just... undefined
}
我可能需要把它分成一个单独的问题,但希望回答第一个问题的人知道第二个问题的答案。
不幸的是,您的两个请求都不可能。JavaScript中的对象字面量很方便,但也有缺点,主要是你已经发现的。
当你在对象字面量内部时,对象还不完全存在。JavaScript解释器还没有完成对它的摄取。在字面量内部,this
指向字面量外部的对象,而字面量没有办法指向它自身的其他部分。
幸运的是,您可以在字面量声明之后执行这两个操作。
myObject = {
someString: 'text',
someArray: ['one', 'two']
};
myObject.someArray.customProp = 0;
myObject.otherString = myObject.someString;
或者,如果你愿意,你可以把所有这些都包装在一个构造函数中,然后用new
创建你的对象。
function MyObject() {
this.someArray = ['one', 'two'];
this.someArray.otherProp = 0;
this.otherString = this.someString = 'text';
}
var myObject = new MyObject();
数组是基于数字的,所以
someArray["customProp"]: 0
不会工作。对于基于字符串的键,它应该是一个Javascript Object{}。然后你可以输入
someArray: {0:"one",1:"two","customProp":0},
对于你的第二个问题:我认为这是不可能的。
你可以在Array上设置属性,但是它们不会被本地函数迭代。您的备选方案是一个对象(按照建议)或一个数组,其中一个成员是对象:
["one", "two", {customProp: 0}]
相关文章:
- 将属性设置为未定义时未通知观察者
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- 附加'沙箱'属性设置为动态创建的iframe以停止重定向
- 如何将按钮的数据属性设置为输入[type=text]中设置的任何值
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 当可见属性设置为 false 时,使用 JavaScript 删除空格
- 无法使用 Snap.SVG将“填充”属性设置为“继承”
- 使用jQuery为属性设置新值
- 是否可以通过属性's值,并将属性设置为parentNode
- 如何使用按钮的jsp点击事件将属性设置为struts-bean
- 在ember.js记录上使用toJSON,将其中一个属性设置为null
- javascript函数属性设置器中的延迟
- 添加“;选中'属性设置为jquery中的复选框
- jQuery/JavaScript按属性设置数组
- Dojo.将JSon中的属性设置为HTML属性
- 将class属性设置为元素不适用于javascript和jquery
- 将属性设置为对对象的引用
- 如何将显示属性设置为与内联!重要的
- jQuery-根据HTML属性设置CSS维度
- 为什么我不能在 JavaScript 中将对象属性设置为空字符串