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 _ _ 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条线路
相关推荐
汪子熙10 分钟前
Angular 服务器端应用 ng-state tag 的作用介绍
前端·javascript·angular.js
Envyᥫᩣ19 分钟前
《ASP.NET Web Forms 实现视频点赞功能的完整示例》
前端·asp.net·音视频·视频点赞
Мартин.4 小时前
[Meachines] [Easy] Sea WonderCMS-XSS-RCE+System Monitor 命令注入
前端·xss
昨天;明天。今天。6 小时前
案例-表白墙简单实现
前端·javascript·css
数云界6 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
风清扬_jd6 小时前
Chromium 如何定义一个chrome.settingsPrivate接口给前端调用c++
前端·c++·chrome
安冬的码畜日常6 小时前
【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次
开发语言·前端·javascript·函数式编程·tdd·fp·jasmine
ChinaDragonDreamer6 小时前
Vite:为什么选 Vite
前端
小御姐@stella6 小时前
Vue 之组件插槽Slot用法(组件间通信一种方式)
前端·javascript·vue.js
GISer_Jing6 小时前
【React】增量传输与渲染
前端·javascript·面试