首页 > 其他分享 >#yyds干货盘点 前端小知识点扫盲笔记记录3

#yyds干货盘点 前端小知识点扫盲笔记记录3

时间:2023-04-07 15:37:53浏览次数:47  
标签:function 知识点 console log val yyds 干货 typeof geyao

前言

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

localStorage 和 sessionStorage

cookie 本身用于浏览器和 server 通讯。 被“借用”到本地存储来的。 可用 document.cookie = '...' 来修改。 其缺点: 存储大小限制为 4KB。 http 请求时需要发送到服务端,增加请求数量。 只能用 document.cookie = '...' 来修改,太过简陋。 2、localStorage 和 sessionStorage HTML5 专门为存储来设计的,最大可存 5M。 API 简单易用, setItem getItem。 不会随着 http 请求被发送到服务端。 它们的区别: localStorage 数据会永久存储,除非代码删除或手动删除。 sessionStorage 数据只存在于当前会话,浏览器关闭则清空。 一般用 localStorage 会多一些

objectDefineProperty

// 三个参数(属性所在的对象,你要操作的属性,被操作的属性的特性)
      //   var geyao = {
      //     sex: "男",
      //     age: 18,
      //   };
      //   console.log(geyao,"geyao1")

      //   Object.defineProperty(geyao, "sex", {

      //     get: function () {
      //       console.log("读取时,get被触发");

      //       return this.sex
      //     },
      //     set: function (value) {
      //       console.log(value,"value");
      //      this.sex=value
      //     },

      //   });
      //   console.log(geyao.sex,"geyao2")
      function getObj() {
        let obj = {
            sex:"男",
            age:18
        };
        let val = ""; //此处val是安全的,外部是无法修改的
        let o = Object.defineProperty(obj, "key", {
          configurable: true,
          enumerable: true,
          get: function () {
            return val || 0;
          },
          set: function (n) {
            val = n;
          },
        });
        return o; //每个对象都是新的
      }
      let aa = getObj();
      console.log(aa.sex); //返回性别

objectDefinePropertytest

<!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>Document</title>
  </head>
  <body>
    <script>
      //
      let geyao = {
        name: "歌谣",
        age: 18,
      };

      function definereactive(data, key, val) {
        Object.defineProperty(data, key, {
          enumerable: true,
          configurable: true,
          get: function () {
            console.log("有人在读取我");
            return val;
          },
          set: function (newVal) {
            if (val == newVal) {
              console.log("我没有变化");
              return;
            }
            console.log("我变化了 我的天呀");
            val = newVal;
          
          },
        });

    
      }
      console.log("--------------1");
      console.log(definereactive(geyao, "age", 18));
      console.log("--------------1");
      console.log("--------------2");
      geyao.age = 19;
      console.log(geyao,"geyao")
      console.log("--------------2");
      console.log("--------------3");
      console.log(definereactive(geyao, "age"));
      console.log("--------------3");
    </script>
  </body>
</html>

slice

<!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>slice</title>
</head>
<body>
  <script>
    var fangfang=["geyao","fangfang","huahua","mingming"]
    //arr.slice([begin[, end]])
    var fangfangTest=fangfang.slice(1)
    //从第一位进行截取
    console.log(fangfangTest,"fangfangTest") // [ "fangfang", "huahua", "mingming" ]
    //截取数组的二到四位
    var fangfangList=fangfang.slice(2,4)
    console.log(fangfangList,"fangfangList") //[  "huahua", "mingming" ]
    //截取数组的第一位到倒数第二个元素
    var fangfangHH=fangfang.slice(1,-1)
    console.log(fangfangHH,"fangfangHH") //[ "fangfang","huahua"]

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

symbol

<!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>Symbol</title>
	</head>
	<body>
		<script>
			const symbol1 = Symbol()
			const symbol2 = Symbol(42)
			const symbol3 = Symbol('foo')
			console.log(typeof symbol1)
			// expected output: "symbol"
			console.log(symbol2 === 42)
			// expected output: false
			console.log(symbol3.toString())
			// expected output: "Symbol(foo)"
			console.log(Symbol('foo') === Symbol('foo'))
			// expected output: false
		</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>
    window.val = 1;
    var json = {
      val: 10,
      dbl: function () {
        this.val *= 2;
      },
    };
    json.dbl(); 
    console.log(json.val,"jsonval")//20
    console.log(window.val,"winval")//1
    var dbl = json.dbl;
   
    dbl();
    console.log(json.val,"jsonval")//20
    console.log(window.val,"winval")//2
    json.dbl.call(window);
    console.log(json.val,"jsonval")//20
    console.log(window.val,"winval")//4
    console.log(window.val + json.val); //24
  </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>
    function foo() {
  console.log(this.a)
}
var a = 1
foo() //1

const obj = {
  a: 2,
  foo: foo
}
obj.foo()//2 

const c = new foo()//undefined
  </script>
</body>
</html>

typeOf

//typeof:能判断所有值类型,函数。不可对 null、对象、数组进行精确判断,因为都返回 object // console.log(typeof undefined) // undefined // console.log(typeof 2) // number // console.log(typeof true) // boolean // console.log(typeof 'str') // string // console.log(typeof Symbol('foo')) // symbol // console.log(typeof 2172141653n) // bigint // console.log(typeof function () {}) // function // // 不能判别 // console.log(typeof []) // object // console.log(typeof {}) // object // console.log(typeof null) // object

总结

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

标签:function,知识点,console,log,val,yyds,干货,typeof,geyao
From: https://blog.51cto.com/u_14476028/6176312

相关文章

  • #yyds干货盘点 前端小知识点扫盲笔记记录
    前言大家好我是歌谣微信公众号关注前端小歌谣带你进入前端巅峰人才交流群MVC和MVVM//在MVVM框架下视图和模型是不能直接通信的,只能通过ViewModel进行交互,它能够监听到数据的变化,//然后通知视图进行自动更新,而当用户操作视图时,VM也能监听到视图的变化,然后通知数据做相应改动,//......
  • 免费分享前端面试题,vue面试题,TypeScript基础知识点 PDF格式
    免费分享前端资料,面试题,电子书接前端开发,带徒弟,一对一教学,远程协助,bug修改微信:......
  • #yyds干货盘点# LeetCode程序员面试金典:四数之和
    题目:给你一个由n个整数组成的数组 nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0<=a,b,c,d <na、b、c和d互不相同nums[a]+nums[b]+nums[c]......
  • #yyds干货盘点# LeetCode面试题:x 的平方根
    1.简述:给你一个非负整数x,计算并返回 x 的算术平方根。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。注意:不允许使用任何内置指数函数和算符,例如pow(x,0.5)或者x**0.5。 示例1:输入:x=4输出:2示例2:输入:x=8输出:2解释:8的算术平方根是2.82842...,由......
  • Java基础知识点(抽象类)
    封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为。一:抽象方法和抽象类的定义将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样,所以,在父类中不能确定的具体的方法体,该方法就可以定义为抽象方法。抽象类:如果一个类中存在抽象方法,那么该类就必须声明抽象类。......
  • Java基础知识点(抽象类)
    封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为。一:抽象方法和抽象类的定义将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样,所以,在父类中不能确定的具体的方法体,该方法就可以定义为抽象方法。抽象类:如果一个类中存在抽象方法,那么该类就必须声明抽象类。......
  • 肖sir__java_知识点1
    (一)java基础1、JDK>JRE>JVMJDK:英文名称(JavaDevelopmentKit),Java开发工具包。jdk是整个Java开发的核心,它集成了jre和一些好用的小工具。例如:javac.exe,java.exe,jar.exe等。JRE:英文名称(JavaRuntimeEnv1ronmeni,仅1们"的m此其运行时环境。它主要包含两个部分,3vmB.q分的......
  • 关于conda小知识点
    一、关于condaconda是一个流行的开源软件包管理系统和环境管理系统,用于在不同的计算机环境中安装和管理软件包和依赖项。以conda开头的命令通常是conda命令,用于在conda环境中执行各种操作,例如创建、激活、更新和删除环境,安装、升级和删除软件包等。以下是一些常用的conda命令:con......
  • (数据科学学习手札151)速通pandas2.0新版本干货内容
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1简介大家好我是费老师,前两天pandas正式发布了其2.0.0版本,作为一次大版本更新,pandas针对底层进行了大量的重构以优化性能和稳定性,其有关这次更新内容的说明文档更是洋洋洒洒非常繁......
  • Linux的shell脚本编写技巧和crontab计划任务的结合(沙漠一样干的干货)
    Shell脚本的重要性我想应该不需要我在重复了,本文的目的是向读者介绍Shell编程的一些固定套路,当然,也可以称之为技巧,而crontab计划任务又和Shell脚本密切相关(一般简单任务当然是写一条命令啦,如果比较复杂的场景还是脚本比较合事宜,并且,脚本更为灵活,拓展性更强啦)。一,脚本的结构就是第一......