JS常用知识点

JS常用的知识点

1、伪数组及伪数组变成真数组

概念:

伪数组就是像数组的对象含有length属性,特性:
1、具有length属性
2、按索引方式存储数据
3、不具有数组的push,pop等方法
如:
1、function内的arguments 。
2、通过document.forms,Form.elements,Select.options,document.getElementsByName() ,
document.getElementsByTagName() ,childNodes/children 等方式获取的集合(HTMLCollection,NodeList)等。
3、特殊写法的对象 如:

var obj={};
obj[0] = "一";
obj[1] = "二";
obj[2] = "三";
obj.length = 3;

它们不具有数组的一些方法如push, pop, shift, join等

伪数组变成真数组:

1、[].slice.call(obj) 这个等于Array.protype.slice.call(obj)
slice会把通过索引位置获取新的数组,该方法不会修改原数组,只是返回一个新的子数组.call会把this的指向改为传进去的obj
var newArr=[].slice.call(obj)
2、 Array.form(obj),ES6的新语法
var newArr=Array.from(obj)
3、 使用扩展运算符,也是ES6的语法
var newArr= […obj]

2、函数中this

1、箭头函数没有this
this指向第一个包裹的它的函数
2、bind/call/apply
this指向第一个参数若参数为空,则指向window
3、普通函数
1)有new,this指向它的实例
2)无new
a.objec.func this指向object,
b.func this指向window,
c.异步调用 this指向window

3、=== 和 ==区别

1、 ==双方类型不一样就会进行类型转换,前者转后者
2、 === 比较的是数据类型是否相同
注意:
对象转原始数据类型结果:’[object Object]’
数组转原始数据类型结果:’’
相同复杂的数据类型比较的是地址

4、浅拷贝深拷贝

浅拷贝
Object.assign方法 拷贝所有属性值到新的对象中,如果属性是对象拷贝的是地址
深拷贝
JSON.parse(JSON.stringify(object)) 通常使用这个方法可以解决大部分问题但是也有局限性
会忽略undefined/symbol,不能序列化、不能解决循环引用的对象这时使用深度克隆
	  deepclone(obj) {
	      const objclone = Array.isArray(obj) ? [] : {}
	      if (obj && typeof obj === 'object') {
	        for (key in obj) {
	          if (obj.hasOwnProperty(key)) {
	            if (obj[key] && typeof obj[key] === 'object') {
	              objclone[key] = deepclone(obj[key])
	            } else {
	              objclone[key] = obj[key]
	            }
	          }
	        }
	      }
	      return objclone
	    }

5、原型和原型链

原型

每一个函数创建时都有一个自带属性,这个属性指向一个对象,这个对象就是原型

原型链

原型本身也是一个对象,这个对象又是Object的实例,所以原型也可以调用Object的原型,这样就形成一个链式调用,又叫原型链

6、判断数组的方法

1)、Object.prototype.toString.call()
2)、instanceof
3)、Array.isArray()

7、call和apply的区别,性能那个更好

Function.prototype.apply和Function.prototype.call的作用是一样的。其别在于出入的参数不同
1)第一个参数都是指定函数体内的this指向
2)第二个参数开始不同,apply是纯如的带下标的集合,数组或者类数组,apply把它传给函数作为参数,call从第二个开始传的参数是不固定的,都会传给函数作为参数
3)call比apply性能更好,call传入的参数格式通常是内部所需要的格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是React中常用的一些知识点: 1. 组件:React将用户界面拆分为可重用的组件,组件是构建React应用的基本单元。组件可以是函数组件或者类组件。 2. JSX:JSX是一种类似于HTML的语法扩展,可以在JavaScript代码中编写类似HTML的结构。它允许我们以声明式方式描述UI组件的结构。 3. Props:Props是组件的属性,用于传递数据和配置参数给组件。通过props,我们可以向子组件传递数据并进行组件之间的通信。 4. State:State是用于存储和管理组件内部的数据的对象。当state发生变化时,React会自动重新渲染组件,并更新相应的视图。 5. 生命周期:React组件具有生命周期方法,这些方法在组件的不同阶段被调用,例如组件被创建、更新、卸载等。 6. Hooks:Hooks是React 16.8版本引入的特性,它允许我们在无需编写类组件的情况下使用状态和其他React特性。常用的Hooks包括useState、useEffect、useContext等。 7. 条件渲染:React允许我们根据条件来渲染不同的内容或组件。常用的条件渲染方式包括if语句、三元表达式和逻辑与(&&)运算符等。 8. 列表渲染:React提供了map方法来遍历数组或者列表,动态生成列表项。通过列表渲染,我们可以根据数据动态生成多个相似的组件。 9. 表单处理:React提供了一些事件和处理函数来方便地处理表单的输入和提交。通过onChange事件,我们可以监听表单元素的值变化,并将其保存到组件的state中。 10. 组件通信:React中的组件通信可以通过props、状态提升、上下文(Context)和全局状态管理工具(如Redux)等方式来实现。 这些是React中常用知识点,当然还有更多深入的内容和特性可以学习和掌握。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值