ES6个人笔记记录——Proxy3

1.apply()

apply方法拦截函数的调用、call和apply方法

三个参数,目标对象,目标对象的上下文对象,目标对象的参数数组

let handler = {
	apply(target,ctx,args){
		return Reflect.apply(...arguments);
	}
};
// eg1
let target1 = function(){
	return 'I am a target';
}

let handler1 = {
	apply : function(){
		return 'I am the proxy';
	}
};

let p1 = new Proxy(target1,handler1);

console.log(p1());

console.log('----------------eg2---------------');
// eg2
let twice = {
	apply(target,ctx,args){
		return Reflect.apply(...arguments) * 2;
	}
};

function sum(left,right){
	return left + right;
}

let proxy1 = new Proxy(sum,twice);
console.log(proxy1(1,2),proxy1.call(null,5,6),proxy1.apply(null,[7,8]));
console.log(Reflect.apply(proxy1,null,[9,8]));

2.has

拦截HasProperty操作

即判断对象是否具有某个属性时,这个方法会生效

典型操作符是in操作符

// eg3
console.log("----------------------eg3------------------------");
let handler2 = {
	has(target,key){
		if(key[0] === '_'){
			return false;
		}
		return key in target;
	}
};

let target2 = { _prop : 'foo',prop : 'foo'};
let proxy2 = (target2,handler2);
console.log('_prop' in proxy2);

如果原对象不可配置或者禁止扩展,那么这时has拦截会报错

Object.preventExtensions(obj)

has只对in循环有效,对for…in循环不生效

// eg4
console.log('------------eg4-------------');
let stu1 = { name : 'wjy', score : '99'};
let stu2 = { name : 'ty' , score : '59'};

let handler3 = {
	has(target,prop){
		if(prop === 'score' && target[prop] < 60){
			console.log("不及格");
			return false;
		}
		return prop in target;
	}
}

let oproxy1 = new Proxy(stu1,handler3);
let oproxy2 = new Proxy(stu2,handler3);
console.log('score' in oproxy1,'score' in oproxy2);

for(let i in oproxy1){
	console.log(oproxy1[i]);
}
for(let i in oproxy2){
	console.log(oproxy2[i]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答这个问题。HTML 是一种用于创建网页的标记语言,它可以定义网页的结构和内容。CSS 是一种用于控制网页样式的语言,它可以定义网页的布局、颜色、字体等样式。JavaScript 是一种用于添加交互性和动态效果的编程语言,它可以让网页变得更加生动和有趣。ES6 是 JavaScript 的一个版本,它引入了许多新的语法和特性,使得编写 JavaScript 更加方便和高效。以上就是我对 HTML、CSS、JavaScript 和 ES6 的简要介绍。 ### 回答2: HTML 是超文本标记语言(HyperText Markup Language)的缩写,用于构建网页结构。通过使用标签(tag),可以定义网页的内容、布局和样式。HTML5 是HTML的最新版本,它引入了新的元素和属性,提供了更多的功能和灵活性。 CSS 是层叠样式表(Cascading Style Sheets)的缩写,用于为网页添加样式和布局。通过使用选择器(selector)和属性(property),可以控制网页元素的外观和位置。CSS3 是CSS的最新版本,它引入了新的特性,如过渡效果(transition),动画(animation)和阴影(box-shadow)。 JavaScript 是一种脚本语言,用于为网页添加交互性和动态效果。它可以通过HTML标签的事件(如点击、鼠标悬停等)来触发特定的行为。 JavaScript ES6 是 ECMAScript 6 的缩写,是 JavaScript 最新的标准版本,引入了很多新的语法和特性,如箭头函数(arrow functions)、常量与块级作用域(const 和 let)、模块化(modules)等。 HTML的基本结构如下: ```html <!DOCTYPE html> <html> <head> <title>网页标题</title> <link rel="stylesheet" href="style.css"> </head> <body> <header>页眉</header> <nav>导航栏</nav> <section>内容区域</section> <aside>侧边栏</aside> <footer>页脚</footer> <script src="script.js"></script> </body> </html> ``` 其中,`<!DOCTYPE html>`声明文档类型为HTML5,`<html>`标签包裹整个网页,`<head>`标签用于定义元数据和引入外部样式表和脚本文件,`<title>`标签定义网页标题,`<link>`标签引入外部CSS文件,`<script>`标签引入外部JavaScript文件。 CSS的基本用法如下: ```css body { background-color: #f2f2f2; font-family: Arial, sans-serif; } header { background-color: #333; color: #fff; padding: 10px; } section { background-color: #fff; color: #333; padding: 20px; } ``` 以上代码设置了背景颜色、字体和间距等样式。 JavaScript的基本语法如下: ```javascript // 变量声明与赋值 let name = 'John'; const age = 25; // 函数定义 function sayHello() { console.log('Hello!'); } // 箭头函数 const greeting = message => { console.log(message); } sayHello(); // 输出:Hello! greeting('Welcome to my website!'); // 输出:Welcome to my website! ``` 以上代码定义了变量和函数,并调用了函数输出信息。 ES6还提供了许多其他的特性,如模板字符串(template literals)、解构赋值(destructuring assignment)、Promise等,用于提供更强大、更简洁的开发工具。使用HTML、CSS和JavaScript开发网页可以创造出丰富多样的用户体验和网页交互效果。 ### 回答3: HTML (超文本标记语言)是用于构建网页结构的标记语言。通过使用不同的标签和属性,可以创建标题、段落、链接、图像等元素。HTML提供了一种简单的方式来将文本、图像和其他内容组织在一起,并以逻辑和结构化的方式呈现。 CSS (层叠样式表)用于控制网页中的布局和外观。它提供了一种样式语言,可以通过选择器和规则来定义网页元素的外观。通过使用CSS,您可以更改字体样式、背景颜色、间距和边框、响应式设计等。 JavaScript (JS) 是一种用于控制网页行为的脚本语言。它可以添加交互性和动态功能,例如验证表单、处理用户输入、创建动画等。通过JavaScript,您可以与用户交互并对网页进行动态更新。 ES6 (ECMAScript 6) 是JavaScript的一个新版本,提供了许多改进和新功能。它引入了let和const关键字来定义变量,箭头函数简化了函数的写法,模板字符串提供了更好的字符串插值,解构赋值方便了对象和数组的处理,扩展操作符可以方便地操作数组和对象等。 在学习这些技术的过程中,以下是一些建议和要点: 1. 使用语义化的HTML标记,清晰地定义网页的结构和内容。 2. 使用外部样式表或内部样式表来管理和组织CSS代码,以增加可维护性。 3. 利用CSS选择器和样式规则来定义元素的外观和布局,使用层叠和继承规则来优化样式。 4. 使用一致的命名约定和组织方式来组织JavaScript代码,以提高代码的可读性和可维护性。 5. 使用函数和事件处理程序来实现交互性和动态行为,避免全局变量的污染。 6. 在ES6中,尽量使用let和const来定义变量,使用箭头函数来简化函数的写法,利用模板字符串和解构赋值来提高代码的可读性。 7. 注意浏览器的兼容性问题,使用polyfills或者转译工具来支持旧版本的浏览器。 8. 通过阅读文档和教程,并实践编写代码来提高技能水平。 通过掌握HTML、CSS、JavaScript和ES6,您可以创建交互式和动态的网页,并为用户提供更好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值