js高级,继承

类的继承可以用extends

class Father {

            constructor(x, y) {

                this.x = x;

                this.y = y;

            }

            sum() {

                console.log(this.x + this.y);

            }

        }

        class Son extends Father {

            constructor(x, y) {

                super(x, y); //调用了父类中的构造函数

            }

        }console.log(super.say() + '的儿子'); super调用父类的普通函数。

利用new object()创建对象。  利用字面量创建对象var obj2 = {};函数创建对象function star(){};

// 1. call() 可以调用函数

        // fn.call();

        // 2. call() 可以改变这个函数的this指向 此时这个函数的this 就指向了o这个对象

利用call可以改变函数的this指向。

// filter 筛选数组

        var arr = [12, 66, 4, 88, 3, 7];

        var newArr = arr.filter(function(value, index) {

            // return value >= 20;

            return value % 2 === 0;

        });

        console.log(newArr);

 // 1. filter 也是查找满足条件的元素 返回的是一个数组 而且是把所有满足条件的元素返回回来

        // 2. some 也是查找满足条件的元素是否存在  返回的是一个布尔值 如果查找到第一个满足条件的元素就终止循环

      // trim 方法去除字符串两侧空格

        var str = '   an  dy   ';

        console.log(str);

        var str1 = str.trim();

trim可以去除空格,完成输入密码或者昵称的时候用户不小心输入的空格问题。

 // 1. 普通函数 this 指向window     // 2. 对象的方法 this指向的是对象 o        // 3. 构造函数 this 指向 ldh 这个实例对象 原型对象里面的this 指向的也是 ldh这个实例对象        // 4. 绑定事件函数 this 指向的是函数的调用者 btn这个按钮对象        // 5. 定时器函数 this 指向的也是window        // 6. 立即执行函数 this还是指向window        // 改变函数内this指向  js提供了三种方法  call()  apply()  bind()

       // call 第一个可以调用函数 第二个可以改变函数内的this 指向

        // call 的主要作用可以实现继承

       // 1. 也是调用函数 第二个可以改变函数内部的this指向

        // 2. 但是他的参数必须是数组(伪数组)

        // 3. apply 的主要应用 比如说我们可以利用 apply 借助于数学内置对象求数组最大值

        // Math.max();

  // 1. 不会调用原来的函数   可以改变原来函数内部的this 指向

        // 2. 返回的是原函数改变this之后产生的新函数

        // 3. 如果有的函数我们不需要立即调用,但是又想改变这个函数内部的this指向此时用bind

        // 4. 我们有一个按钮,当我们点击了之后,就禁用这个按钮,3秒钟之后开启这个按钮

        // var btn1 = document.querySelector('button');

        // btn1.onclick = function() {

        //     this.disabled = true; // 这个this 指向的是 btn 这个按钮

        //     // var that = this;

        //     setTimeout(function() {

        //         // that.disabled = false; // 定时器函数里面的this 指向的是window

        //         this.disabled = false; // 此时定时器函数里面的this 指向的是btn

        //     }.bind(this), 3000); // 这个this 指向的是btn 这个对象

        // }

'use strict';开启严格模式,

// 3. 严格模式下全局作用域中函数中的 this 是 undefined。

        // function fn() {

        //     console.log(this); // undefined。

        // }

        // fn();

        // 4. 严格模式下,如果 构造函数不加new调用, this 指向的是undefined 如果给他赋值则 会报错.

        // function Star() {

        //     this.sex = '男';

        // }

        // // Star();

        // var ldh = new Star();

        // console.log(ldh.sex);

        // 5. 定时器 this 还是指向 window

        // setTimeout(function() {

        //     console.log(this);

        // }, 2000);

        // a = 1;

        // a = 2;

        // 6. 严格模式下函数里面的参数不允许有重名

        // function fn(a, a) {

        //     console.log(a + a);

        // };

// 闭包(closure)指有权访问另一个函数作用域中变量的函数。

        // 闭包: 我们fun 这个函数作用域 访问了另外一个函数 fn 里面的局部变量 num

        // 我们fn 外面的作用域可以访问fn 内部的局部变量

        // 闭包的主要作用: 延伸了变量的作用范围

// 递归函数 : 函数内部自己调用自己, 这个函数就是递归函数

        var num = 1;

        function fn() {

            console.log('我要打印6句话');

            if (num == 6) {

                return; // 递归里面必须加退出条件

            }

            num++;

            fn();

        }

        fn();

// 利用递归函数求1~n的阶乘 1 * 2 * 3 * 4 * ..n

        function fn(n) {

            if (n == 1) {

                return 1;

            }

            return n * fn(n - 1);

        }

        console.log(fn(3));

        console.log(fn(4));

        // 详细思路 假如用户输入的是3

        //return  3 * fn(2)

        //return  3 * (2 * fn(1))

        //return  3 * (2 * 1)

        //return  3 * (2)

        //return  6

       // 正则表达式在js中的使用

        // 1. 利用 RegExp对象来创建 正则表达式        // 2. 利用字面量创建 正则表达式        // 3.test 方法用来检测字符串是否符合正则表达式要求的规范

正则表达式,一般用于账号密码昵称输入的限制。然后电话输入的限制,限制输入的数字还有限制输入的数量长度。

es6中新出了 let声明变量、用let声明的变量具有块级作用,只能在当前函数内使用,函数结束就会销毁。        // 使用const关键字声明的常量具有块级作用域        // 使用const关键字声明的常量必须赋初始值        // 常量声明后值不可更改        // 数组解构允许我们按照一一对应的关系从数组中提取值 然后将值赋值给变量

let ary = [1,2,3];

        let [a, b, c, d, e] = ary;        

// 箭头函数是用来简化函数定义语法的

        // const fn = () => {

        //  console.log(123)

        // }

        // fn();

       

        // 在箭头函数中 如果函数体中只有一句代码 并且代码的执行结果就是函数的返回值 函数体大括号可以省略

        // const sum = (n1, n2) => n1 + n2;  

        // const result = sum(10, 20);

        // console.log(result)

       

        // 在箭头函数中 如果形参只有一个 形参外侧的小括号也是可以省略的

        // const fn = v => {

        //  alert(v);

        // }

        // fn(20)

       

        // 箭头函数不绑定this 箭头函数没有自己的this关键字 如果在箭头函数中使用this this关键字将指向箭头函数定义位置中的this

es6中可以用。。。来接受剩余参数。

   let ary1 = ['张三' , '李四', '王五'];

        let [s1, ...s2] = ary1;

        console.log(s1)

        console.log(s2)

        let r1 = str.startsWith('Hello'); 以hello 开始

        console.log(r1);

        let r2 = str.endsWith('2016');以2016结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值