在JavaScript中,如何取消引用函数返回的对象?
例如:
var tmp = getTextProperties();
font = tmp.font;
size = tmp.size;
color = tmp.color;
bold = tmp.bold;
italic = tmp.italic;
PHP具有list()构造,其功能类似:
list($font, $size, $color, $bold, $italic) = getTextProperties();
答案 0 :(得分:4)
使用ES6,您可以按以下方式分解对象:
var { font, size, color, bold, italic } = getTextProperties();
答案 1 :(得分:0)
要添加到@markmoxx所说的内容(从现在开始(形成未来!)),我们有新的解构方法。现在,我们可以在解构语句中重命名并分配默认值。思考一下:
let obj = {a,: 5, b: 6, c: [7,8],d:[9,10]e: {f: 11, g: 12}};
let {a: first, b: second, c: arr, d: [innerFirst, innerSecond], e: {f: objFirst, g: objSecond}, h = "default1", i: [defaultArr1 = "default2", defaultArr2 = "default3"], j: {k: objDefault1 = "default4"} } = obj;
console.log(first, second, arr, innerFirst, innerSecond, objFirst, objSecond, h, defaultArr1,defaultArr2, objDefault1);
// This outputs:
5, 6, [7,8],9,10,11,12,"default1","default2","default3","default4"
因此,现在我们可以更好地控制销毁分配。
编辑:用于一致性
PHP的list函数主要用于数组(大部分)。并且那有一些怪异的行为(反向分配取决于php版本,等等)。 javascript中的解构是不同的。即使使用上述重命名语法,您仍然需要了解对象键/数组索引。同样(这可能是一个优先问题,但是),用javascript进行分解具有更大的功能,因为数组和对象都可以被分解为任何嵌套深度,同时允许您重命名和分配默认值。但请注意,因为结构调整很容易失控。考虑一下过度破坏结构的示例:
const NameView = ({context: { state: [ state, update ], id, display: {tag, size = 32, type = "text", style: { wrapper: outerouter = "card", content: innerouter = "content", banner: {wrapper: outerinner = "title",content: innerinner = "content"} } } } }) => (
<div className={outerouter}>
<input className={innerouter} type={type} maxlength={size} size={size} value={name} id={id} name={id} onChange={(e) => update(e.target.value)}/>
<div className={outerinner}>
<label for={id} className={innerinner}>{tag}</label>
</div>
</div>
)