来自网站exploringjs
在ES6之前,没有相应的提取数据的机制。 这就是解构 - 它可以让你提取多个属性 通过对象模式从对象。例如,在左侧 任务的一面:
const { first: f, last: l } = obj;
我理解下面的示例,例如,可以将createServer
模块中的http
方法分配给同名变量。
const { createServer } = require('http');
但是这个怎么样:
const { parse: parseUrl } = require('url');
您如何在代码中使用它?
答案 0 :(得分:2)
如果要更改来自$numbersArr = array(3,5,17,19,24,30,38,47,52);
$userInput = 35;
if (in_array($userInput, $numbersArr)){
echo 'found needle';
}else{
for ($loop = $userInput;$loop < 9999999; $loop++) {
if (in_array($loop,$numbersArr)){
echo 'found needle';
break;
}
} // end of for loop
}
因为require('url')包含require('url')
,但是假设您当前范围内已经有一个名为parse
的变量,并且您想要parse
来自parse
在这种情况下,您可以使用此模式将其重命名为require('url')
示例:
parseUrl
答案 1 :(得分:1)
它只是提取parse
数据并在此范围内创建parseUrl
变量。
当(假设)您使用API并希望使用变量而不是成员访问时,这非常方便:
const {id: serviceID} = await fetchDefaultService();
const {id: uid} = await fetchUser(serviceID, uid);
它只是允许控制命名(parseUrl
具有比parse
更多的含义),并允许您避免潜在的冲突。
答案 2 :(得分:1)
示例中的行从parse
模块中剥离url
函数,并将其重命名为parseUrl
。您可以像这样使用它:
> const { parse: parseUrl } = require('url')
undefined
> parseUrl('http://stackoverflow.com/')
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'stackoverflow.com',
port: null,
hostname: 'stackoverflow.com',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'http://stackoverflow.com/' }
这只是从node
代表复制/粘贴。打开终端,输入命令node
,然后交互式输入js并测试发生的情况。
答案 3 :(得分:1)
Destructuring是一个很棒的功能,可以帮助您轻松地从数组超级中提取对象属性或元素 让我们通过例子来理解它
所以如果对象有道具,我们可以提取它。
let obj = {
name :'maged'
}
let {name} = obj ; // have this prop
let {fullName} = obj ; // don't have this prop
console.log(name) ; // maged
console.log(fullName) ; // undefined
&#13;
function require(module) {
return {
name : module ,
method1: '1' ,
method2 : '2'
}
}
let obj = require('url') ;
let {name,method1,method2} = obj ;
console.log(name) ; // url
console.log(method1) ; // 1
console.log(method2) ; // 2
&#13;
如您所见,我们可以轻松地从返回的对象中提取多个属性
在我们的第三个例子中,我们将看到如何将prop提取到一个新的变量名称
let obj = {
a :'a' ,
b:'b'
}
let {a:first , b:second} = obj ;
console.log(first) ; // a
console.log(second) // b
console.log(a); // Uncaught ReferenceError: a is not defined
&#13;
正如您所看到的,我们将属性提取为新的变量名称,这很好,
let obj = {
fullName : 'Sniper'
}
let {fullName='super'} = obj ; // sniper from the obj
console.log(fullName) ;
let {name='maged'} = obj ; // maged because undefined in the obj
console.log(name) ;
&#13;
我希望这些例子能够帮助您理解解构及其工作方式
注意解构适用于数组