我有一个函数,我试图转换为ES6中的新箭头语法.它是一个命名函数:
function sayHello(name) {
console.log(name + ' says hello');
}
Run Code Online (Sandbox Code Playgroud)
有没有办法给它一个没有var语句的名字:
var sayHello = (name) => {
console.log(name + ' says hello');
}
Run Code Online (Sandbox Code Playgroud)
显然,我只能在定义之后使用此功能.如下:
sayHello = (name) => {
console.log(name + ' says hello');
}
Run Code Online (Sandbox Code Playgroud)
在ES6中有新的方法吗?
是否有可能做到这一点:
myfile.js:
function foo() {
alert(<my-function-name>);
// pops-up "foo"
// or even better: "myfile.js : foo"
}
Run Code Online (Sandbox Code Playgroud)
我的堆栈中有Dojo和jQuery框架,所以如果其中任何一个更容易,它们就可用了.
我正在尝试使用phantomJS(这是一个很棒的工具btw!)为我有登录凭据的页面提交表单,然后将目标页面的内容输出到stdout.我能够使用幻像访问表单并成功设置其值,但我不太确定提交表单和输出后续页面内容的正确语法.到目前为止我所拥有的是:
var page = new WebPage();
var url = phantom.args[0];
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
console.log(page.evaluate(function () {
var arr = document.getElementsByClassName("login-form");
var i;
for (i=0; i < arr.length; i++) {
if (arr[i].getAttribute('method') == "POST") {
arr[i].elements["email"].value="mylogin@somedomain.com";
arr[i].elements["password"].value="mypassword";
// This part doesn't seem to work. It returns the content
// of the current page, not the content of the page after
// the submit has been executed. Am I …Run Code Online (Sandbox Code Playgroud) 是否有任何"和谐"方法从ES6类实例中获取类名?以外
someClassInstance.constructor.name
Run Code Online (Sandbox Code Playgroud)
目前我指望Traceur的实施.似乎Babel有一个Function.namepolyfill ,而Traceur没有.
总而言之:ES6/ES2015/Harmony中没有其他方式,ES中没有预期的ATM.接下来.
它可以为未经管理的服务器端应用程序提供有用的模式,但在用于浏览器/桌面/移动设备的应用程序中是不需要的.
巴别使用core-js到填充工具Function.name,应当手动加载Traceur和打字稿应用适当.
我需要当前函数名作为字符串来登录我们的日志工具.但arguments.callee.name只能在松散模式下工作.如何获取功能名称"use strict"?
我在IE浏览器调试工作今天结束的发现constructor.name是undefined.
我创建了以下简单的代码来重现问题:
({}).constructor.name === undefined // => true
Run Code Online (Sandbox Code Playgroud)
是否有任何解决方法可以使这项工作?
也许压倒一些原型?
如果可能,我不想更改语法,因为更改将是主要的.
function MyFunction() {
closure = function() {
alert('my parent function name is: '/* now what here ? */);
}
closure();
}
MyFunction();
Run Code Online (Sandbox Code Playgroud)
结果应该是 my parent function name is: MyFunction
(对于主持人:我不知道为什么stackoverflow阻止我发送这个问题声称它不符合质量标准.我是否必须输入一些多余的文本才能发送它.)
假设我有一个功能:
function test1() {
}
Run Code Online (Sandbox Code Playgroud)
我想从内部返回"test1".我发现你可以做的arguments.callee就是返回整个函数,然后做一些丑陋的正则表达式.有更好的方法吗?
命名空间函数怎么样?
是否有可能得到他们的名字:例如:
var test2 =
{
foo: function() {
}
};
Run Code Online (Sandbox Code Playgroud)
我想从内部返回foo这个例子.
更新:对于arguments.callee.name Chrome返回空白,IE9返回undefined.它不适用于范围函数.
在Node.js中,我试图获取正在执行的当前函数的名称:
function doSomething(req, res) {
console.log('Function name: ' + doSomething.name);
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但我希望(如果可能)在当前上下文中获取名称。这样,如果以后重命名该方法,则无需手动更改。是否有一个通用对象(即类似于“ this”)指向当前正在执行的功能/当前上下文?谢谢。
arguments.callee不幸的是已弃用,在“严格模式”下使用它会引发错误。
是否有任何新的适当(标准)替代方法可以在实际函数中获取函数名称? 还是会出现在 ECMA6、7 的未来计划中?
最近的答案只不过是肮脏的黑客,对我来说是不可接受的答案。
和arguments.callee.caller.name不工作或者(V7.5.0的NodeJS)
目前,我尝试建立了一个简单的授权系统(认证已经到位)帆基于政策体系帆提供(v0.10)应用程序.为此,我需要从我的策略中获取控制器和操作当前请求目标.
我会在政策中粗略地做以下事情:
module.exports = function (req, res, next) {
// Get target controller and action
var target = req.target; // How to do this?
var action = req.action; // and this?
// Lookup in database, let through if matches or render error
User.findOne...
};
Run Code Online (Sandbox Code Playgroud)
我记得目标信息在某些时候嵌入在请求对象中,但现在没有找到(commit 5d98ec8).
我知道有可能通过模仿sails路由器来解析req.route并获取所需的信息,但我宁愿避免为了策略的唯一目的而复制路由逻辑.
编辑:
可以从请求对象中检索控制器标识,如下所示:
var controller = req.options.controller || req.options.model;
Run Code Online (Sandbox Code Playgroud)
示例请求选项:
{ detectedVerb: { verb: '', original: '/user/:id?', path: '/user/:id?' },
associations:
[ { alias: 'auth', type: 'model', model: 'key' },
{ …Run Code Online (Sandbox Code Playgroud) 考虑功能:
function foo() {
console.log(this);
}
foo();Run Code Online (Sandbox Code Playgroud)
如何只打印this对象的名称(窗口或全局......等),而不是它的内容?
javascript ×11
ecmascript-6 ×3
node.js ×3
jquery ×2
constructor ×1
dojo ×1
forms ×1
object ×1
phantomjs ×1
post ×1
sails.js ×1
strict ×1
strict-mode ×1
traceur ×1