简体   繁体   English

Javascript 在方法中解构

[英]Javascript destructuring in method

Can someone explain what exactly is going on in depth and if doing it this way is best practice for this line:有人可以深入解释到底发生了什么,如果这样做是这条线的最佳实践:

getAdvertisingChannelHtml({site, adViews, clicks, conversions, conversionRate} = this){

My understanding is that I am destructuring in a method and passing Object Properties in a method and making it equal to the this object?我的理解是我在一个方法中解构并在一个方法中传递 Object 属性并使其等于this object?


class AdvertisingChannel {
  constructor(data) {
    Object.assign(this, data);
    this.conversionRate = (this.conversions / this.clicks) * 100;
  }
  getAdvertisingChannelHtml(
    { site, adViews, clicks, conversions, conversionRate } = this
  ) {
    return `
          <div class="site-name"> ${site} </div>
          <div>Views: ${adViews} </div>
          <div>Clicks: ${clicks} </div>
          <div>Conversions: ${conversions} </div>
          <div>Conv. Rate: <span class="highlight"> ${conversionRate} %</span></div> 
      `;
  }
}


Tried looking at documentation and trying to find out more about what exactly is going on but was still confused.尝试查看文档并试图了解更多关于到底发生了什么但仍然感到困惑。

The function will destructure its Object parameter and assign the values to specific variables ( site , adViews , clicks , conversions , conversionRate ). function 将解构其 Object 参数并将值分配给特定变量( siteadViewsclicksconversionsconversionRate )。 The parameter also got set to this by default if you called the function without passing an argument.如果您在不传递参数的情况下调用 function,该参数也默认设置this

const data = {
  site: 'stackoverflow.com',
  adViews: 10,
  clicks: 1000,
  conversions: 10,
};
const advertisingChannel = new AdvertisingChannel(data);

advertisingChannel.getAdvertisingChannelHtml();

/**
 * site: 'stackoverflow.com'
 * adViews: 10
 * clicks: 1000
 * conversions: 10
 * conversionRate: 1
 */

advertisingChannel.getAdvertisingChannelHtml({
  site: 'example.com',
  adViews: 2,
  clicks: 2000,
  conversions: 20,
});

/**
 * site: 'example.com'
 * adViews: 2
 * clicks: 2000
 * conversions: 20
 * conversionRate: undefined ( because it does not set yet)
 */


Refer: Default parameters参考: 默认参数

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM