es6 --- 正确获取Generator函数内部的this对象使其可以使用new

首先看2个例子

function * g() {this.a = 11;
}let o = g();
console.log(o.a);

在这里插入图片描述
可以看见Generator函数里面的this指向的对象取不出来.
再看下一个例子:

function* F() {yield this.x = 2;yield this.y = 3;
}
new F();

在这里插入图片描述
可以看出Generator函数无法使用new操作符,

下面一共一个解决方案:使之可以使用new 和 将this对象正确取出来

function* gen() {this.a = 1;yield this.b = 2;
}// 传入gen的原型对象,并使用call方法绑定作用域..可以解决this作用域问题
// 将F改造成构造函数的形式可以解决new 问题
function F() {return gen.call(gen.prototype);
}var f = new F();
console.log(f.next());
console.log(f.next());
console.log(f.a);
console.log(f.b);

在这里插入图片描述
可以看到.并没有报错,并且this正确绑定到实例f上了.f也可以使用next方法.

参考《ES6标准入门》(第三版) P343~P345

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql三-3:完整性约束

阅读目录 一 介绍二 not null与default三 unique四 primary key五 auto_increment六 foreign key七 作业一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该…

LOL

[分享] 从《LOL》谈游戏中的随机动作优化 http://bbs.gameres.com/thread_472292.html 光子工作室陈宇复盘《全民突击》研发历程(完整版) https://mp.weixin.qq.com/s?__bizMjM5OTc2ODUxMw&mid400110877&idx2&sn372fd6492a9d8dd1791d87eb2c…

超级简易法上传本地文件到github上

之前文章写过廖雪峰老师关于git教程的帖子,现在终于有时间实践了!我这段时间在学微信小程序版的贪吃蛇, 想着先把写好的文件上传试试,于是乎,便有了如下…… 大家要是不想听废话可以拉到最后去…… 1、我先在github…

es6 --- 对任意对象部署可遍历接口

有时候需要对对象进行遍历,下面提供一个比较方便的接口, 其基本思路是,首先得到对象的所有键(key), 然后将其放在yield* 后面. yield* 可以通过 for … of … 循环遍历 具体实现如下: function* iterEntries (obj) {let keys Object.keys(obj);for ( let i 0; i < keys.…

element-ui表单验证:用户名、密码、电话、邮箱

之前设计login组件时增加了简单的表单验证&#xff0c;因此对应的users组件&#xff0c;添加用户功能也必须设置相应的验证规则。 文档form表单验证只提供了用户名/密码&#xff0c;是否必须/长度限制的验证。对于电话、邮箱和地址的验证如下&#xff1a; html部分&#xff0c…

composer(作曲家)安装php-ml

刚开始我用的是up5.6版本php命令安装composer 后来使用composer时发现命令行会提示php版本太低 于是我下载了wamp&#xff0c;使用7.1版本的php重新安装了composer&#xff0c;因为php-ml要求必须是7.1版本 在安装的时候有一些问题&#xff0c;那就是安装不成功&#xff0c;并没…

前端解析返回的对象时json显示$ref问题的解决

在mapper中写的语句&#xff0c;结果集中association&#xff0c;采用的一个对象&#xff0c;整个list列表中每个元素有一个对象元素&#xff0c;如果第二个元素中有一个与第一个元素中对象同名的&#xff0c;就会去引用上一个元素的地址&#xff0c;在json前台解析的时候就不会…

Uncaught TypeError: Cannot redefine property: $router

原因&#xff1a;就如报错提示所描述的&#xff0c;不能重新定义router&#xff0c;说明是重复定了router&#xff0c;说明是重复定了router&#xff0c;说明是重复定了router。通常是因为在项目中安装了vue-router的依赖并且用Vue.use()使用了vue-router&#xff0c;还在index…

微信小程序模仿开眼视频app(一)——视频首页、视频详情、分类

可到我的github账号上去copy文件 先展示一下我实现了的功能吧 提示&#xff0c;如果有出现无法加载域名之类问题的的&#xff0c;可以在“设置”-“项目设置”-打钩“不校验合法域名……”&#xff1b; 或者直接登录自己的微信小程序后台设置域名信息 首页部分&#xff1a; 1…

es6 --- Thunkify源码分析

首先看一个例子:读取package.json下的文件,并将读取的数据(若读取失败)打印出来 // 导入fs和thunkify模块 var thunkify require(thunkify); var fs require(fs);// 定义读取文件的函数read var read thunkify(fs.readFile);// 调用read函数读取package.json下的文件.并对数…

(转)C# WebApi 身份认证解决方案:Basic基础认证

原文地址&#xff1a;http://www.cnblogs.com/landeanfen/p/5287064.html 阅读目录 一、为什么需要身份认证二、Basic基础认证的原理解析 1、常见的认证方式2、Basic基础认证原理三、Basic基础认证的代码示例 1、登录过程2、/Home/Index主界面3、WebApiCORS验证部分&#xff08…

commit之后,想撤销commit

git reset --soft HEAD^转载于:https://www.cnblogs.com/gjack/p/9271556.html

ZNZD平台vue项目

一、安装配置node.js 1.1 配置企业级软件仓库 1&#xff09;首先用的是Nexus Repository Manager搭建npm私服&#xff1b;&#xff08;待补充&#xff09; 2&#xff09;项目使用修改.npmrc文件来修改源 现在需要做的就是修改源&#xff01;采取配置npmrc文件的方式&#x…

微信小程序模仿开眼视频app(二)——搜索功能

微信小程序模仿开眼视频app&#xff08;一&#xff09;有介绍首页、视频详情和分类部分 可到我的github账号上去copy文件 搜索部分 一开始没想要设置历史记录啊、热门搜索啊这些的&#xff0c;只是想把搜索框弄好看一点&#xff0c;无意中发现了微信官方ui库&#xff1a;weu…

es6 --- Thunk函数的作用

首先了解一下javascript里面的Thunk函数的含义:将多参数函数,替换成一个只接受回调函数作为参数的单参数函数 // 一个具体的例子// 正常版本的readFile(多参数函数) fs.readFile(filename, callback);// Thunk版本的readFile(单参数版本) var Thunk function (fileName) {ret…

设计模式(六)------设计模式六大原则(5):迪米特法则

转载自&#xff1a;http://www.jianshu.com/p/14589fb6978e &#xff08;作者简书&#xff1a;涅槃1992&#xff09; 揭秘迪米特法则 迪米特法则&#xff08;Law of demeter,缩写是LOD&#xff09;要求&#xff1a;一个对象应该对其他对象保持最少了解&#xff0c; 通缩的讲就是…

http://www.cda.cn/view/25735.html

通过实例浅析Python对比C语言的编程思想差异 我一直使用 Python&#xff0c;用它处理各种数据科学项目。 Python 以易用闻名。有编码经验者学习数天就能上手&#xff08;或有效使用它&#xff09;。 听起来很不错&#xff0c;不过&#xff0c;如果你既用 Python&#xff0c;同时…

前端知识点梳理(一)

一、HTML 1. meta标签 记住2个属性&#xff1a;name和http-equiv name&#xff1a;描述网页 <meta name"参数" content"具体的描述">http-equiv&#xff1a;文件头 HTML中的meta标签及其使用方法 二、CSS 1. css实现水平居中的几种方式 css实…

Babel 7 基础入门学习(详细版)

可以在我的GitHub上下载示例代码。 前言 之前一直想要系统的学习一下Babel的使用规则&#xff0c;看过阮一峰老师的《Babel基础入门》&#xff0c;无奈此教程是2016年出的&#xff0c;而Babel 7都已经出来啦&#xff0c;于是&#xff0c;在搜集了各种资料后&#xff0c;关于…

JS的DOM操作

1.DOM节点 &#xff08;1&#xff09;node.offsetParent最近的有定位属性的祖先节点 如果祖先节点都没有定位&#xff0c;那么默认为body &#xff08;2&#xff09;node.offsetLeft/node.offsetTop 距离最近的有定位属性的祖先节点的距离 node.offsetLeft左外边框到定位父级的…