前端小知识点扫盲笔记记录6

63 阅读1分钟

前言

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣带你进入前端巅峰交流群 今天继续对前端知识的小结

前端this指向问题解决方案bind

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>前端this指向问题普通函数</title>
</head>
<body>
  <script>
    //口诀 谁调用就会指向谁 这边是普通函数 直接报错this.fang is not a function
    var name="geyao"
      var fangfang = {
        name : "fangfang",

        fang: function () {
            console.log(this.name)
        },
        fun: function () {
         
            setTimeout( function () 
                this.fang()
            }.bind(fangfang)(),100);
        }
    };
    fangfang.fun()
  </script>

</body>
</html>

前端this指向问题解决方案call

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>前端this指向问题普通函数</title>
</head>
<body>
  <script>
    //口诀 谁调用就会指向谁 这边是普通函数 直接报错this.fang is not a function
    var name="geyao"
      var fangfang = {
        name : "fangfang",

        fang: function () {
            console.log(this.name)
        },

        fun: function () {
           
            setTimeout( function () {
                this.fang()
            }.call(this,fangfang),100);
        }

    };
    fangfang.fun()
  </script>
</body>
</html>

前端this指向问题解决方案this

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>前端this指向问题普通函数</title>
</head>
<body>
  <script>
    //口诀 谁调用就会指向谁 这边是普通函数 直接报错this.fang is not a function
    var name="geyao"
      var fangfang = {
        name : "fangfang",

        fang: function () {
            console.log(this.name)
        },

        fun: function () {
            _this=this
            setTimeout( function () {
                _this.fang()
            },100);
        }

    };
    fangfang.fun()


  </script>
  
</body>
</html>

前端this指向问题解决方案箭头函数

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>前端this指向问题普通函数</title>
</head>

<body>
  <script>
    //口诀 谁调用就会指向谁 这边是普通函数 直接报错this.fang is not a function
    var name = "geyao"
    var fangfang = {
      name: "fangfang",

      fang: function () {
        console.log(this.name)
      },
      fun: function () {
        setTimeout(() => {
          this.fang()
        }, 100);
      }
    };
    fangfang.fun()
  </script>
</body>
</html>

前端原型和原型链

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>前端原型和原型链</title>
	</head>
	<body>
		<script>
			//构造函数
			// 实例成员: 实例成员就是在构造函数内部,通过this添加的成员。实例成员只能通过实例化的对象来访问。

			// 静态成员: 在构造函数本身上添加的成员,只能通过构造函数来访问
			
			function Animai(name, age) {
				this.name = name
				this.age = age
			}

			Animai.length = '2m'
			let dog = new Animai('小狗', '4')
			console.log(dog, 'dog')
			//Animai {name: '小狗', age: '4'} 'dog'

			let cat = new Animai('小猫', '5')
			console.log(cat, 'cat')
			//Animai {name: '小猫', age: '5'}

			console.log(dog.length, 'length')
			console.log(Animai.length, 'length')
			//undefined 'length'
			// Animai 2
		</script>
	</body>
</html>

前端基本数据类型

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>前端基本数据类型</title>
</head>
<body>
  <script>
    function test(){
      console.log(1)
    }
    console.log(test,"test")
  </script>
</body>
</html>

设计模式单体模式

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>单体模式</title>
</head>

<body>
  <script>
    // 单体模式 只能实例化一次 每次返回的实例是同一对象
    var Singleton = function (name) {
      this.name = name;
    };
    Singleton.prototype.getName = function () {
      return this.name;
    }
    // 获取实例对象
    var getInstance = (function () {
      var instance = null;
      return function (name) {
        console.log(name,"name")
        //如果实例不存在 重新新加个实例
        if (!instance) {
          instance = new Singleton(name);
        }
 
        return instance;
      }
    })();
    // 测试单体模式的实例
    var a = getInstance("aa");
    var b = getInstance("bb");
    console.log(a,"a") //aa
    console.log(b,"b") //aa
  </script>
</body>
</html>

总结

我是歌谣 最好的种树是十年前 其次是现在 加油 歌谣