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 _ _ 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条线路
相关推荐
怕浪猫6 小时前
FDE 如何正确解决现场项目工程性的问题
前端·后端·ai编程
西瓜太郎12346 小时前
外层模型卡片与分组详情成功率不一致,应该怎么排查?
前端·typescript·go·软件工程·react
GreenTea7 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
几何心凉10 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen10 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
雪芽蓝域zzs10 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
风骏时光牛马11 小时前
从零到实战,完整AI学习路线
前端
三十而立洋12 小时前
深入理解 Monorepo:子包安装依赖
前端·前端工程化
IT_陈寒12 小时前
Java Stream处理大集合,我的内存怎么就炸了
前端·人工智能·后端
Captaincc12 小时前
AI 用量桌面端-桌面宠物自定义指南
前端·人工智能