箭头函数、for循环、事件修饰符

【 箭头函数 】

  1. 匿名函数: 使用function关键字定义的普通匿名函数。

    var f = function(name) {
        console.log(name);
    };
    f('jing');
    
  2. 无参数无返回值的箭头函数:

    var f1 = () => {
        console.log('这个就是箭头函数');
    };
    f1();
    
  3. 有多个参数无返回值的箭头函数:

    var f2 = (name, age) => {
        console.log(name, age);
    };
    f2();
    
  4. 有一个参数无返回值的箭头函数:

    var f3 = name => {
        console.log(name);
    };
    f3('jingyexiao');
    
    var f3 = () => {
    
    };
    f3();
    
  5. 有一个参数,一个返回值的箭头函数:

    var f4 = name => {
        return name + '_nb';
    };
    f4('jianshu');
    

    这个可以简写成:

    var f5 = name => name + '_nb';
    var res = f5('jianshu');
    console.log(res);
    
  6. 箭头函数内部的this 箭头函数内部没有自己的this,会继承外层作用域的this

// 在全局作用域下定义一个对象
const obj = {
  name: 'Alice',
  getNameRegular: function() {
    return this.name; // 正常函数中的this指向当前对象obj
  },
  getNameArrow: () => {
    return this.name; // 箭头函数中的this继承自外层作用域,在这里指向全局作用域的this(通常是window对象)
  }
};

console.log(obj.getNameRegular()); // 输出: "Alice",正常函数中的this指向obj对象
console.log(obj.getNameArrow()); // 输出: undefined,箭头函数继承外层作用域的this,在全局作用域中找不到name属性,返回undefined

如果在外部写一个let name = 'yun'

结果就会输出console.log(obj.getNameRegular()); // 输出: "Alice",正常函数中的this指向obj对象
console.log(obj.getNameArrow()); // 输出: yun,

总结

原始的函数声明方式:

var f = function(name) {
    console.log(name);
};
f('jing');

使用箭头函数:

这里function= =>

var f3 = (name) => {
    console.log(name);
};
f3('jing');
let f=()=>{}

【 js for循环 】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js for 循环</title>
    <script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<ul id="app">
    <li v-for="item in arr" :key="item">{{ item }}</li>
    <hr>
    <br>
    <li v-for="num in data_list" :key="num">{{num}}</li>
</ul>
</body>
<script>
    new Vue({
        el: '#app',
        data: {
            arr: [1, 2, 3, 4, 5, 6, 7, 8],
            data_list:[]
        },
        created() {
            // 在Vue 在组件创建之后执行
            // 这个就是一个钩子函数
            for (let i = 11; i < 19; i++) {
                this.data_list.push(i);
            }

        }
    })


</script>

</html>

【 事件修饰符 】

  • .stop 只处理自己的事件,父控件冒泡的事件不处理(阻止事件冒泡)
  • .self 只处理自己的事件,子控件冒泡的事件不处理
  • .prevent 阻止a链接的跳转
  • .once 事件只会触发一次(适用于抽奖页面)

注意事项:

  • .stop 修饰符会阻止事件继续传播,这意味着在点击 .inner 元素时,事件只会触发 .inner 的处理函数,不会继续传播到其父元素 .top 上。

  • .self 修饰符只有当事件的目标是当前元素本身时才触发处理函数,不会触发由子元素冒泡上来的事件。

  • .prevent 修饰符用于阻止默认行为,比如在点击 <a> 标签时,阻止其默认的跳转行为。

    ​ 就会可以让阻止事件不起作用

    •     dian1(){
               console.log("点个毛")
               location.href='https://www.yituyu.com/'
           },
      
  • .once 修饰符确保事件处理函数只会触发一次,无论是通过点击还是其他方式触发,而且刷新页面后会重置。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script>
    <style>
        .top {
            height: 300px;
            width: 300px;
            background-color: lightpink;
            margin: auto;
        }

        .inner {
            height: 50px;
            width: 150px;
            background-color: cadetblue;
            margin: auto;
        }
        .text-center{
            text-align: center;
        /*  将文本水平居中对齐  */
        }
    </style>

</head>
<body>

<div id="one">
    <h3 class="text-center">事件修饰符号---》stop</h3>

<!--  阻止事件冒泡(点击(子类)有惊喜!!!只会触发当前的事件,并不会冒泡触发(父类) 没有的事件)  -->
    <div class="top" @click="handTop">(父类) 没有
        <div class="inner" @click.stop="handinner">(子类)有惊喜!!!</div>
    </div>

    <h3 class="text-center">事件修饰符号---》self</h3>
<!--只有event.targer是当前操作的元素才触发(只有点击自身才会触发,通过冒泡也不会触发事件)-->
    <div class="top" @click.self="handTop">
        <div class="inner" @click="handinner">点我!!!</div>
    </div>

    <h3>事件修饰符--》prevent</h3>
<!--    阻止a链接的跳转   -->
    <a href="https://www.yituyu.com/" @click.prevent="dian1">点我看美女</a>

    <h3>事件修饰符--》once</h3>
    <button @click.once="choujian">抽奖</button>
</div>
<script>
    new Vue({
        el: "#one",
        data:{},
        methods:{
            handTop(){
                console.log('我是你爹!!')
            },
            handinner(){
                console.log('对对对对我是儿子!!')
            },
            dian1(){
                console.log("点个毛")
                location.href='https://www.yituyu.com/'
            },
            choujian (){
                console.log('只会执行一次')
            }
        }
    })

</script>

</body>
</html>

image-20240426205410944

注意:

在使用 v-model 指令时对数据进行处理:

  1. .number: 当输入框的值发生变化时,将输入值转换为数值类型。
  2. .trim: 自动过滤用户输入的首尾空白字符。
  3. .lazy: 默认情况下,v-model 默认在 input 事件中同步输入框的值与数据,而 .lazy 修饰符会转变为在 change 事件中同步。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="app">
    <h2>输入框示例</h2>

    <!-- 使用 .number 修饰符,将输入值转换为数值类型 -->
    <label>年龄(数字):</label>
    <input type="text" v-model.number="age">

    <!-- 使用 .trim 修饰符,自动过滤用户输入的首尾空白字符 -->
    <label>用户名(去除首尾空格):</label>
    <input type="text" v-model.trim="username">

    <!-- 使用 .lazy 修饰符,将在 change 事件中同步输入框的值 -->
    <label>消息(延迟同步):</label>
    <input type="text" v-model.lazy="message">
</div>

<script>
    new Vue({
        el: '#app',
        data: {
            age: "6546",
            username: '你啊啥的爱书',
            message: '你失败了'
        }
    });
</script>

</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值