首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于销毁对象属性和分配对象属性的ES6功能

用于销毁对象属性和分配对象属性的ES6功能
EN

Stack Overflow用户
提问于 2017-11-12 11:15:48
回答 2查看 218关注 0票数 0

我是一名软件开发人员,现在正在学习新的ES6风格的JavaScript。我发现ES6特性很棒,但我仍然不知道ES6提供的所有最流行的特性,我发现在实践中很难明智地使用它。

我有下面的代码行--如果可能的话--我想让它变得更简单。我不得不承认,在这个例子中,为了重构和更好地学习ES6如何帮助我在将来创建有表现力的简单代码(或者至少要理解某人是否使用了某种疯狂的一行代码),我也会进行重构。

代码语言:javascript
复制
// HTML: <canvas></canvas>
const canvas = document.querySelector('canvas');
// I'm wondering if there is another way to do this:
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

我可以像这样创建widthheight

代码语言:javascript
复制
const { innerWidth: width, innerHeight: height } = window;
// equivalent to:
const width = window.innerWidth;
const height = window.innerHeight;

我正在寻找一种解决方案,它不是创建新变量,而是使用一些属性名称将值赋值给对象。有一种惯用的方法吗?

就像这样:

代码语言:javascript
复制
const canvas = document.querySelector('canvas');
// NONE OF THESE WORKED
const { innerWidth: canvas.width, innerHeight: canvas.height } = window;
const { canvas.width, canvas.height } = { window.innerWidth, window.innerHeight }
EN

回答 2

Stack Overflow用户

发布于 2017-11-12 13:40:01

就像这样: //所有这些都不适用于const { innerWidth: canvas.width,innerHeight: canvas.height }= window;

这是正确的方法。但是,您不希望声明新变量,而是将canvas属性作为目标,因此const在这里是错误的。你只需要任务。和you need to wrap in parenthesis

代码语言:javascript
复制
({ innerWidth: canvas.width, innerHeight: canvas.height } = window);
票数 2
EN

Stack Overflow用户

发布于 2017-11-12 11:15:48

在一行中这样做的一种可能方法是使用Array destructuring。下面的示例认为,在源对象和目标对象上,属性名是不同的。

代码语言:javascript
复制
[canvas.width, canvas.height] = [window.innerWidth, window.innerHeight]

在我看来,这是非常直观的代码,但我不认为它经常使用。这可能会在经验较少的JavaScript开发人员中造成一些混乱,因此您需要自己决定它是否真正提高了代码的可读性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47248126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档