es6中箭头函数 原型

箭头函数 特性

箭头函数的特性

复制代码
	不绑定arguments,用rest参数...解决
	本身没有this的概念,捕获其所在上下文的 this 值
	作为自己的 this 值,this指向全局
	箭头函数不能使用new(会报错)
	箭头函数没有原型属性(prototype)
	箭头函数不能当做Generator函数,不能使用yield关键字
	箭头函数不能换行
	箭头函数有constructor、length属性
	箭头函数可以立即执行

改变this指向的方法有哪些

1)

在指定位置定义this存为变量

2)

使用箭头函数

3)

使用setTimeout

4)

使用call()方法

5)

使用bind()方法

6)

使用applay()方法

call(),bind(),apply()区别

1.apply、call、bind他们三个都能改变函数this的指向问题;

2.apply、call这两个方法的主动调用,bind返回的是改变this指向后的新函数;

3.传参的问题区别,call和bind都是直接传递参数,apply传递的是数组

html 复制代码
Function.prototype.callNew = function(content,...sum){
			console.log(!content);
			if(!content|| context === null|| context === undefined){
				context = window;
			}
			let fn = Symbol();
			content[fn] = this;
			return content[fn](...sum);
		}

深拷贝

html 复制代码
function deepClone(obj){
		let objClone = Array.isArray(obj)?[]:{};
			if(obj && typeof obj==="object"){
		for(key in obj){
		 			if(obj.hasOwnProperty(key)){
		 				//判断ojb子元素是否为对象,如果是,递归复制
		 				if(obj[key]&&typeof obj[key] ==="object"){
		 					objClone[key] = deepClone(obj[key]);
		 				}else{
		 					//如果不是,简单复制
		 					objClone[key] = obj[key];
		 				}
		 			}
		 		}
		 	}
		 	return objClone;
		 }    
		 let a=[1,2,3,4],
		 b=deepClone(a);
		 a[0]=2;
		 console.log(a,b);

原型

html 复制代码
方法一:
		// 	Array.prototype.shifts = function(){
		// 	for(var i=0;i<this.length-1;i++){
		// 		this[i] = this[i+1];
		// 	}
		// 	this.length = this.length-1;
		// }
		// var arr = [11,22,33];
		// arr.shifts();
		// console.log(arr);
		
复制代码
方法二:
	// Array.prototype.unshifts = function(user){
	// 	this.length = this.length+1;
	// 	for(var i=this.length-1;i>=0;i--){
	// 		this[i] = this[i-1];
	// 	}
	// 	this[0] = user;
	// }
	// var arr = [11,22,33];
	// arr.unshifts(44);
	// console.log(arr);

原型查找机制

  1. 当访问一个对象的属性或方法时,首先查找这个对象自身有没有
  2. 如果没有就查找它的原型(也就是 _ _ proto _ _指向的prototype 原型对象 )
  3. 如果还没有找到就查找原型对象的原型(Object的原型对象)
  4. 依次类推一直找到Object为止( null )
  5. _ _ proto _ _ 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条线路
相关推荐
IT_陈寒1 小时前
Java的Optional差点让我掉坑里,这几个坑你别踩
前端·人工智能·后端
粉嘟小飞妹儿1 小时前
JavaScript对象创建的几种灵活方法
前端
前端小万1 小时前
2026年了,为什么我突然开始做GZH?
前端
子兮曰1 小时前
Harness 驾驭工程深度教程:从 AGENTS.md 到全链路 AI 编码基础设施
前端·后端·ai编程
木子雨廷2 小时前
Flutter 桌面小组件开发
前端·flutter
还有多久拿退休金2 小时前
我在自家页面嵌了个 iframe,结果对方说"你不配"——跨域和 CSP 的那些坑
前端·架构
Awu12272 小时前
🍎Google Stitch :用自然语言做 UI 设计,把设计师的活也抢了
前端·aigc·ai编程
竹林8182 小时前
从“连接不上”到“交易成功”:我用 @solana/web3.js 在 React 中搞定 Solana 钱包交互的全过程
前端
YouCanYouUp.2 小时前
掌控感心理学解析:人类最底层的心理需求
前端
wyc是xxs2 小时前
浏览器解析HTML头部的底层逻辑
前端·html