ES6 DEMO
- 案例:
- ①匿名封装
- (function(window,document){
- const HEAD = 1;
- let MSG = function(options){
- this._init(options);
- }
- //原型
- MSG.prototype._init = function({msg}){
- this._doSomeThing(msg);
- }
- MSG.prototype._doSomeThing = function(msg){
- alert(msg);
- }
- // 挂载
- window.$Msg = Msg;
- })(window,document);
- // 调用
- new $Msg({msg : '您好'});
- ②PromiseAll运用,图片全部加载才显示出来
- (function(document) {
- let LoadImg = function(){
- let promises = imgs.map(src => {
- return this.imgToPromise(src);
- });
- this.imgLoad(promises);
- }
- LoadImg.prototype.imgToPromise = src => {
- return new Promise((resolve,reject) => {
- const img = new Image();
- img.src = src;
- img.onload = () => {
- 你resolve(img);
- };
- img.onerror = (e) => {
- reject(e);
- }
- })
- }
- LoadImg.prototype.imgLoad = arr => {
- Promise.all(arr).then((arr)=>{
- arr.forEach(img => {
- document.body.append(img);
- })
- },err => {
- // 错误
- console.log(err);
- })
- }
- window.LoadImg = LoadImg;
- })(document);
- const imgs = [
- 'https://pics1.baidu.com/feed/5882b2b7d0a20cf4f2291433b2004030adaf99b5.jpeg?token=00786888f8e87b7704e637824f570ece&s=BB98C8015A64750DC42015C00300A0B2','https://pics7.baidu.com/feed/4610b912c8fcc3ce8b524ed0574cdd8ed53f2056.jpeg?token=024ed25c842ae64030effe79f8832ee7&s=E9271F70592B412C18783DD30300C0B2','https://pics7.baidu.com/feed/4610b912c8fcc3ce8b524ed0574cdd8ed53f2056.jpeg?token=024ed25c842ae64030effe79f8832ee7&s=E9271F70592B412C18783DD30300C0B2'
- ];
- new LoadImg(imgs);
- ③ promise动画
- function moveTo(el,x,y){
- return new Promise( resolve => {
- el.style.transform = `translate(${x}px,${y}px)`;
- setTimeout(function(){
- resolve();
- },1000)
- })
- }
- let el = document.querySelector('div');
- document.querySelector('button').addEventListener('click', e => {
- moveTo(el,100,100).then(()=>{
- console.log(1);
- return moveTo(el,200,200);
- }).then(()=>{
- console.log(1);
- return moveTo(el,100,100);
- }).then(()=>{
- console.log(1);
- return moveTo(el,0,0);
- })
- })
- ④对象封装变形类
- <!DOCTYPE html>
- <html>
- <head>
- <title></title>
- </head>
- <style type="text/css">
- .ball{
- width: 150px;
- height: 150px;
- background: linear-gradient(#ff9b9b 50%,#106dbb 50%);
- border-radius: 50%;
- }
- </style>
- <body>
- <div class="ball"></div>
- </body>
- <script type="text/javascript">
- class Transform{
- constructor(el){
- this.el = document.querySelector(el);
- // 队列
- this._queue = [];
- // 默认时间
- this.default_transition = 3000;
- this._transform = {
- rotate: '',
- translate: '',
- scale: '',
- }
- }
- // 位移
- translate(value, time){
- return this._add('translate', value, time);
- }
- // 缩放
- scale(value, time){
- return this._add('scale',value,time);
- }
- // 形变
- rotate(value,time){
- return this._add('rotate',value,time);
- }
- _add(type, value, time){
- this._queue.push({type, value, time});
- return this;
- }
- done() {
- this._start();
- }
- _start() {
- if(!this._queue.length)return;
- // 先进先出
- setTimeout(() => {
- // shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
- const info = this._queue.shift();
- let transition = info.time ? info.time : this.default_transition;
- this.el.style.transition = `all ${ transition / 1000}s`;
- this.el.style.transform = this._getTransform(info);
- setTimeout(() => {
- this._start();
- },transition);
- },0)
- }
- _getTransform({ time, value, type}){
- switch(type){
- case 'translate':
- this._transform.translate = `translate(${ value })`;
- break;
- case 'scale':
- this._transform.scale = `scale(${ value })`;
- break;
- case 'rotate':
- this._transform.rotate = `rotate(${ value }deg)`;
- break;
- }
- return `${this._transform.translate} ${this._transform.scale} ${this._transform.rotate}`;
- }
- }
- let tf = new Transform(".ball");
- tf.translate('100px,100px').scale('1.5').rotate(2220,220000).done();
- </script>
- </html>
ES6 DEMO的更多相关文章
- JavaScript面向对象轻松入门之封装(demo by ES5、ES6、TypeScript)
本章默认大家已经看过作者的前一篇文章 <JavaScript面向对象轻松入门之抽象> 为什么要封装? 封装(Encapsulation)就是把对象的内部属性和方法隐藏起来,外部代码访问该对 ...
- vue+node+es6+webpack创建简单vue的demo
闲聊: 小颖之前一直说是写一篇用vue做的简单demo的文章,然而小颖总是给自己找借口,说没时间,这一没时间一下就推到现在了,今天抽时间把这个简单的demo整理下,给大家分享出来,希望对大家也有所帮助 ...
- JavaScript面向对象轻松入门之概述(demo by ES5、ES6、TypeScript)
写在前面的话 这是一个JavaScript面向对象系列的文章,本篇文章主要讲概述,介绍面向对象,后面计划还会有5篇文章,讲抽象.封装.继承.多态,最后再来一个综合. 说实话,写JavaScript面向 ...
- JavaScript面向对象轻松入门之继承(demo by ES5、ES6)
继承是面向对象很重要的一个概念,分为接口继承和实现继承,接口继承即为继承某个对象的方法,实现继承即为继承某个对象的属性.JavvaScript通过原型链来实现接口继承.call()或apply()来实 ...
- JavaScript面向对象轻松入门之多态(demo by ES5、ES6、TypeScript)
多态(Polymorphism)按字面的意思就是"多种状态",同样的行为(方法)在不同对象上有不同的状态. 在OOP中很多地方都要用到多态的特性,比如同样是点击鼠标右键,点击快捷方 ...
- 一个基于ES6+webpack的vue小demo
上一篇文章<一个基于ES5的vue小demo>我们讲了如何用ES5,vue-router做一个小demo,接下来我们来把它变成基于ES6+webpack的demo. 一.环境搭建及代码转换 ...
- 一个webpack,react,less,es6的DEMO
1.package.json如下 { "name": "demo", "version": "1.0.0", " ...
- JavaScript面向对象轻松入门之抽象(demo by ES5、ES6、TypeScript)
抽象的概念 狭义的抽象,也就是代码里的抽象,就是把一些相关联的业务逻辑分离成属性和方法(行为),这些属性和方法就可以构成一个对象. 这种抽象是为了把难以理解的代码归纳成与现实世界关联的概念,比如小狗这 ...
- JavaScript ES6和ES5闭包的小demo
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons) 可能有些小伙伴不知道ES6的写法,这儿先填写一个小例子 let conn ...
随机推荐
- 什么是伪静态,以及ubuntu + apache 如何实现伪静态
原文链接:http://www.cnblogs.com/ainiaa/archive/2010/07/25/1784564.html php伪静态 一直在做php的开发工作.在开发的过程中老早就听说了 ...
- NFA和DFA的区别
NFA DFA 初始状态 不唯一 唯一 弧上的标记 字(单字符字/ε) 字符(串) 转换关系 非确定 确定 对于每个NFA M都存在一个DFA M' 使得 L(M) = L(M')
- TestStand 基础知识[6]--Build-in Step Types (1)
Step Types 有TestStand自带的,也有自定义的.本文先介绍自带的Step Types. 首先什么是Step Types ? 翻译过来就是步骤的类型,类似数据类型--数据有整型,字符串, ...
- Xcode11: 删除默认Main.storyBoard, 自定义UIWindow的变化 UIWindow 不能在AppDelegate中处理
Xcode自动新增了一个SceneDelegate文件,查找了一下官方文档WWDC2019:Optimizing App Launch 发现,iOS13中appdelegate的职责发现了改变: iO ...
- OSPF配置实验(一)
单区域OSPF 命令: R1(config)#router ospf 1 //启动OSPF进程 R1(config-router)#router-id 1.1.1.1 // ...
- asp.net core 3.x 授权默认流程
一.前言 接上一篇<asp.net core 3.x 授权中的概念>,本篇看看asp.net core默认授权的流程.从两个方面来看整个授权系统是怎么运行的:启动阶段的配置.请求阶段中间件 ...
- 珠峰-vue
- jdk升级后Eclipse无法启动问题
overview: 今日安装jdk11,设置好环境变量后,eclipse无法运行,由于项目依赖原因,不想更新eclipse的版本. 我的jdk是1.8,在将环境变量设回1.8后依然无法运行.在多次尝试 ...
- JS正则表达式的创建、匹配字符串、转义、字符类、重复以及常用字符
正则表达式都是操作字符串的 作用:对数据进行查找.替换.有效性验证 创建正则表达式的两种方式: // 字面量方式 /js/ // 构造函数方式 regular expression new RegEx ...
- java数据结构---循环队列
#java学习经验总结------循环队列的实现(数组) package datastructure;/*数组实现循环队列 队列first in first out*/ public class Ci ...