ES6基本语法

目录

  1. 常量
  2. 作用域
  3. 箭头函数
  4. 默认参数
  5. 对象代理

定义常量

//ES5常量
Object.defineProperty(window,"PI2",{
    value: 3.1415926,
    writable: false
});
console.log(window.PI2);
//ES6常量
const PI=3.1415926;
console.log(PI);

//ES5
const callback=[];
for (var i = 0; i <= 2; i++){
    callback[i] = function () {
        return i*2;
    }//此函数在外部循环结束后才执行,故变量i最后值为3
}
console.table([
    callback[0](),
    callback[1](),
    callback[2]()
])

//ES6
const  callback2=[];
for (let j = 0; j <= 2; j++) {
    callback2[j] = function () {
        return j*2;
    }
}
console.table([
    callback2[0](),
    callback2[1](),
    callback2[2]()
])

作用域

//ES6
{
    function f1() {
        return 1;
    }
    console.log("f1===1",f1()===1);
    {
        function f1() {
            return 2;
        }
        console.log("f1===2",f1()===2);
    }
}

//ES5
((function () {
    function f1(){
        return 1;
    }
    console.log("f1===1",f1()===1);
    ((function () {
        function f1() {
            return 2;
        }
        console.log("f1===2",f1()===2);
    })())
})())

箭头函数:确定this指向的对象,即定义此对象的对象,不是调用此对象的对象。

{
    //ES5
    const odd=[1,3,5,7,9];
    const even=odd.map(function (p) {
        return p-1;
    });
    console.log(odd,even);
}

{
    //ES6
    const odd=[1,3,5,7,9];
    const even=odd.map( p => p-1);
    console.log(odd,even);
}

{
    //ES5
    var factory=function () {
        this.a='a';
        this.b='b';
        this.c={
            a:'a+',
            b: function() {
                return this.a;
            }
        }
    }
    console.log(new factory().c.b());
}

{
    let factory=function () {
        this.a='a';
        this.b='b';
        this.c={
            a:'a+',
            b: ()=>{
                return this.a;
            }
        }
    }
    console.log(new factory().c.b());
}

默认参数:可变参数

{
    //ES5
    function f(a,b,c) {
        b= (b===undefined) ? 2 : b;
        c= (c===undefined) ? 3 : c;
        return a+b+c;
    }
    console.log(f(1));
}

{
    //ES6
    function checkParameter() {
        throw new Error("can't be empty");
    }
    function f(a=checkParameter(),b=2,c=3){
        return a+b+c;
    }
    try {
        console.log(f())
    }catch (e) {
        console.log(e)
    }finally {

    }
}

{
    //ES5
    function f() {
        var a=Array.prototype.slice.call(arguments);
        var sum=0;
        a.forEach(function (item) {
            sum+=item;
        })
        return sum;
    }
    console.log(f(1,2,3))
}

{
    //ES6
    function f2(...a){
        let sum=0;
        a.forEach( item=>sum+=item );
        return sum;
    }
    console.log(f2(1,2,3,4,5));
}

{
    //ES5
    let a=['a','b','c'];
    let b=[1,2,3];
    b=b.concat(a);
    console.log(b);
}
{
    //ES6
    let a=['a','b','c'];
    let b=[1,2,3,...a];
    console.log(b);
}

对象代理

{
    //ES3
    /* eslint-disable */
    var Person=function () {
        var data={
            name:'mike',
            sex:'male',
            age:21
        }
        this.get=function (key) {
            return data[key];
        }
        this.set=function (key, value) {
            if(key!=='sex'){
                data[key]=value;
            }
        }
    }
    var person=new Person();
    console.table({
        name:person.get('name'),
        sex:person.get('sex'),
        age:person.get('age')
    });
    person.set('sex','female');
    console.table({
        name:person.get('name'),
        sex:person.get('sex'),
        age:person.get('age')
    });
}
{
    //ES5
    var Person={
        name:'mike',
        age:21
    }
    Object.defineProperty(Person,'sex',{
        writable:false,
        value:'male'
    });
    console.table({
        name:Person.name,
        sex:Person.sex,
        age:Person.age
    });
}
{
    //ES6
    let Person={
        name:'mike',
        sex:'male',
        age:21
    }
    let person=new Proxy(Person,{
        get(target,key){
            return target[key];
        },
        set(target,key,value){
          if(key !== 'sex'){
              target[key]=value;
          }
        }
    });
    console.table({
        name:person.name,
        sex:person.sex,
        age:person.age
    })
    try{
        person.sex='female'
    }catch (e) {
        console.log(e);
    }
    console.table({
        name:person.name,
        sex:person.sex,
        age:person.age
    })
}
内容概要:本文深入探讨了折扣店快消品定价的研究,涵盖快消品与折扣店行业的概述、定价影响因素、定价策略、定价方法、定价技巧及案例分析。快消品行业涉及日常生活用品、食品、饮料等,具有高频次和重复购买的特点。折扣店市场规模不断扩大,主要参与者包括赵一鸣、好特卖等。影响定价的因素包括成本(生产、库存、物流)、市场需求(规模、购买力、需求弹性)、竞争(对手定价策略、市场份额)、产品特性(差异化、品牌形象)、渠道与分销成本、政府政策等。定价策略分为成本导向(成本加成、目标收益)、需求导向(理解价值、需求差异)和竞争导向(随行就市、投标定价)。定价方法包括市场调研、成本加成、竞争比较和价值定价。定价技巧涵盖高价撇脂、渗透定价、价格歧视和捆绑定价。最后通过好特卖、嗨特购、零食很忙的案例分析,展示了不同折扣店的定价策略及其效果。 适合人群:从事快消品行业、折扣店运营的管理人员及对定价策略感兴趣的商业人士。 使用场景及目标:①帮助折扣店管理者了解定价的基本理论和实际操作方法;②为快消品企业提供定价决策支持,优化定价策略;③通过案例分析,提供实际操作中的经验和教训。 其他说明:折扣店在制定快消品定价时,应综合考虑多种因素,灵活运用不同的定价策略和技巧,以应对市场变化,提升竞争力。建议企业定期监控市场动态,分析消费者反馈,不断优化定价方案。
在Vue 3中,特别是使用Vue CLI构建项目时,我们可以使用`createApp`函数来创建一个新的应用程序实例,并结合ES6语法如箭头函数和模板字符串来动态生成表格。这里有一个简单的例子: 首先,在`.vue`文件中: ```html <template> <div id="app"> <h2>动态表格</h2> <label for="rows">行数:</label> <input type="number" v-model.number="rows" /> <label for="columns">列数:</label> <input type="number" v-model.number="columns" /> <table> <tbody v-for="(row, rowIndex) of rows" :key="rowIndex"> <tr v-for="(cell, cellIndex) of Array(columns)" :key="cellIndex"> <td>{{ cell[rowIndex] || '-' }}</td> <!-- 空白单元格显示 '-' 或者动态绑定数据 --> </tr> </tbody> </table> </div> </template> <script> import { createApp } from 'vue'; export default { data() { return { rows: 0, columns: 0, }; }, created() { // 使用ES6的解构赋值简化数据初始化 this.tableData = Array.from({ length: this.rows }, (_, i) => Array(this.columns).fill(i + 1)); }, }; // 使用createApp API 挂载组件 const app = createApp({ render: () => h(AppComponent), }); app.mount('#app'); </script> ``` 在这个例子中,我们使用`Array.from`创建了一个二维数组`tableData`,其长度和宽度由`rows`和`columns`决定。然后在`v-for`循环中,我们创建了表格的行和列。 关于实验目的: 1. `createApp`函数帮助你在Vue 3中更简洁地创建和管理应用,而不需要手动设置根节点和`new Vue()`。 2. ES6语法如箭头函数和模板字符串(`{{ }}`)用于更清晰地表达渲染逻辑,以及`v-model.number`用于数据绑定并确保输入数值类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值