博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端小知识10点(2019.5.2)
阅读量:5897 次
发布时间:2019-06-19

本文共 2184 字,大约阅读时间需要 7 分钟。

1、为什么 jQuery 整体上是一个匿名函数自调用?

因为匿名函数自执行里面的所有东西都是局部的,这样引用 jQuery 时,能防止和其他的代码冲突。


2、jQuery 静态方法和实例方法的区别

  • $() 是调用 jQuery 方法返回的一个 jQuery 对象,$() 调用的方法是实例方法,实例方法只能为 $() 所用
    如:$("li").each()
  • $ 是 jQuery 函数(方法),$ 调用的方法是静态方法/工具方法,静态方法既可以给 $() 调用,也可以给原生 javascript 调用
    如:$().each()

3、为什么 typeof null 的结果是 object ?

console.log(typeof null) //object 复制代码

在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null的类型标签也成为了 0,typeof null就错误的返回了"object"。

MDN链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof


4、undefined 不是 js 的关键字

我们习惯在项目里这样判断是否为 undefined

name===undefined?'a':'b' 复制代码

但一旦在块级作用域中,手动定义 undefined 并且赋值了,那么会覆盖掉 js 的变量类型 undefined

{
  let undefined='a'   console.log(undefined) //a } 复制代码

所以,在做项目中,不要给变量起名为 undefined,并赋值(感谢 @子奕 同学的提醒)


5、利用原型,来节省内存

A:

   function person(name){
      this.name=name       this.showName=function(){
        console.log(this.name)       }     } 复制代码

B:

    function personA(name) {
      this.name=name     }     personA.prototype={
      showName:function () {
        console.log(this.name)       }     } 复制代码

使用方法 A 来 new 对象时,每个对象都要定义一遍 showName 方法,这会增加浏览器的内存

而使用方法 B new 对象的话,每个对象都共享了原型的方法,从而节省内存


6、new 一个对象,一般经过四个步骤

(1)创建一个新对象
(2)将构造函数的作用域赋值给该对象(即 this 指向该对象)
(3)执行构造函数的代码
(4)返回该新对象
注意:new 关键字的重要作用就是把 实例对象的 this 与 原型链相关联


7、当给数组的index赋负数或小数时,数组的长度有无变化?

  let arr=[]   arr[10]=11   console.log(arr.length); //11   arr[-1]=-1   console.log(arr.length) //11   arr[3.14]=3.14   console.log(arr.length) //11   //===================================   let arr1=[]   arr1[2.1]=2.1   console.log(arr1[2.1],'arr144') //2.1   console.log(arr1.length,'arr145') //0   arr1[1]=1   console.log(arr1.length,'arr147') //2   //========================   let arr2=[]   arr2[-1]=-1   console.log(arr2.length,'arr253') //0 复制代码

(之前的例子写的不对,感谢 @CurryME 同学的提醒)

8、antd的<Input>的 allowClear 作用是清除value的值,如果你的value是保存在state里的话,也是可以清除的

复制代码

9、对象有中文属性,如何通过解构赋值的方式去获取中文属性?

  let obj={
'哈哈':1}   const {
'哈哈':b}=obj   const {
a:{
'嘿嘿':b}}=obj    console.log(b,'b24') //1 复制代码

10、对象解构赋默认值

//默认设为noa const {a='noa'}=obj //默认设为nob const {a:{b='nob'}}=obj 复制代码

(完)

转载地址:http://xnosx.baihongyu.com/

你可能感兴趣的文章
tomcat源码分析(第四篇 tomcat请求处理原理解析--Container源码分析)
查看>>
使用element-ui的el-tree组件入坑讲解之setCheckedKeys
查看>>
Python 比特币 教程 之一:创建机器人
查看>>
实战:基于Spring Boot快速开发RESTful风格API接口
查看>>
Perseus-BERT——业内性能极致优化的BERT训练方案【阿里云弹性人工智能】
查看>>
React学习笔记2---生命周期
查看>>
视频转mp4格式转换器如何把其他格式的视频转换成mp4格式
查看>>
构造函数创建私有变量(防继承)
查看>>
关于大数问题的个人理解
查看>>
深入了解以太坊
查看>>
2018 年终总结
查看>>
用于机器学习的Python和HDFS
查看>>
js类型转换的各种玩法
查看>>
Spring MVC+Stomp+Security+H2 Jetty
查看>>
vue路由传值params和query的区别
查看>>
Vue源码解析:虚拟dom比较原理
查看>>
【译】 WebSocket 协议第七章——关闭连接(Closing the Connection)
查看>>
函数柯里化
查看>>
JavaScript高级程序设计(第3版)第3章
查看>>
力扣(LeetCode)31
查看>>