小编T.J*_*der的帖子

为什么`obj.foo = function(){};`不将名称`foo`分配给函数?

从ES2015(ES6)开始,函数具有适当的名称(包括官方name属性),除了明显的函数声明和命名函数表达式(例如赋值给变量)之外,还以各种方式创建函数时分配名称(函数的名称设置为变量的名称),分配给对象属性(函数的名称设置为属性的名称),甚至函数参数的默认值(函数的名称设置为参数的名称).但是,在现有对象上(例如,不在对象初始值设定项中)分配属性不会将该属性的名称分配给该函数.为什么不?当然必须有一个特定的理由,这是不可取的/可能的.它以前如何?

要明确:我不是在问如何解决它.我问是什么阻止了这个看似很明显的案例在被许多其他人(包括默认参数值!)处理时被处理.一定有充分的理由.

请不要推测或理论化.TC39有理由不包括它.我对这个原因感兴趣.我已经通过了TC39会议记录,但还没有找到它.到目前为止,我发现的最接近的是艾伦· 威尔夫斯 - 布洛克回复贝尔吉说,由于"各种反对意见",没有就此形式达成共识,但遗憾的是他没有说出那些反对意见.

细节:

以下所有内容都foo兼容的浏览器上为该功能指定名称:

// Requires a compliant browser

// Assigning to a variable or constant...
// ...whether in the initializer...
{
    let foo = function() { };
    console.log("1:", foo.name); // "foo"
}
{
    const foo = function() { };
    console.log("2:", foo.name); // "foo"
}
// ...or later...
{
    let foo;
    foo = function() { };
    console.log("3:", foo.name); // "foo"
}
// As …
Run Code Online (Sandbox Code Playgroud)

javascript function ecmascript-6

53
推荐指数
1
解决办法
2325
查看次数

获取被触发(触发)的事件的名称(类型)

我有以下代码:

$('#my-button').on('click change', function(event) {
    alert("Who fired me, click or change?");
});
Run Code Online (Sandbox Code Playgroud)

我怎么知道所谓的事件是"点击"还是"改变"?

javascript jquery events dom

44
推荐指数
2
解决办法
4万
查看次数

为什么HashMap要求初始容量为2的幂?

当我看到以下内容时,我正在浏览Java的HashMap源代码

//The default initial capacity - MUST be a power of two.
static final int DEFAULT_INITIAL_CAPACITY = 16;
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么这个要求首先存在?我还看到允许创建具有自定义容量的HashMap的构造函数将其转换为2的幂:

int capacity = 1;
while (capacity < initialCapacity)
  capacity <<= 1;
Run Code Online (Sandbox Code Playgroud)

为什么容量总是必须是2的幂?

此外,当执行自动重新散列时,究竟会发生什么?哈希函数也改变了吗?

java hash hashtable hashmap

41
推荐指数
2
解决办法
2万
查看次数

使用链接和脚本标记引用JavaScript源有什么区别?

我尝试过使用以下两个source-reference-lines.他们都编译.但有什么区别?

第一种方法:

<script src="~/Scripts/jquery-1.4.1.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

第二种方法:

<link href="~/Scripts/jquery-1.4.1.js" type="text/javascript" />
Run Code Online (Sandbox Code Playgroud)

注:另外还有一个类似的区别scriptlink as="script"标签,询问有关<link href="js/script.js" as="script">,这是不同的.

javascript

39
推荐指数
2
解决办法
2万
查看次数

jQuery - 如何在事件触发后暂时禁用onclick事件侦听器?

事件被触发后,如何暂时禁用onclick事件监听器(jQuery首选)?

例:

用户单击按钮并在下面触发此函数后,我想禁用onclick侦听器,因此不会向我的django视图发出相同的命令.

$(".btnRemove").click(function(){
   $(this).attr("src", "/url/to/ajax-loader.gif");
   $.ajax({
        type: "GET",
        url: "/url/to/django/view/to/remove/item/" + this.id,
        dataType: "json",
        success: function(returned_data){
            $.each(returned_data, function(i, item){
              // do stuff                       
     });
   }
});
Run Code Online (Sandbox Code Playgroud)

非常感谢,

阿尔

javascript ajax jquery events onclick

37
推荐指数
3
解决办法
8万
查看次数

存在非短路逻辑运算符的原因

当与使用boolean的操作数,&|成为逻辑每运营商的JLS第15.22.2.不像&&||,然而,这些不短路; 他们总是评估双方.我有一个愚蠢的问题:当我们拥有更高效的短路逻辑运算符(,)时&,为什么效率较低的非短路逻辑运算符(,|)仍然存在?我的意思是,与短路逻辑运算符相比,非短路逻辑运算符的实际用途是什么?换句话说,总是通过使用非短路逻辑运算符来评估双方的用法是什么?&&||

java logical-operators

33
推荐指数
2
解决办法
1万
查看次数

是否有任何非eval方法来创建具有运行时确定名称的函数?

有没有办法创建一个具有在运行时确定的实名的函数,而不使用eval纯JavaScript?(因此,没有生成的script元素,因为那些特定于浏览器环境[并且在许多方面eval无论如何都会伪装];不使用某个特定JavaScript引擎的非标准功能等)

请注意,我特别询问变量或具有名称的属性引用的匿名函数,例如:

// NOT this
var name = /* ...come up with the name... */;
var obj = {};
obj[name] = function() { /* ... */ };
Run Code Online (Sandbox Code Playgroud)

在那里,虽然object属性有一个名称,但函数却没有.匿名函数适用于很多东西,但不是我在这里寻找的东西.我希望函数有一个名称(例如,在调试器中显示调用堆栈等).

javascript

33
推荐指数
2
解决办法
5126
查看次数

在保留基本格式的同时,我可以使用什么来清理收到的HTML?

这是一个常见的问题,我希望它已经彻底解决了我.

在我正在为客户端做的系统中,我们希望从不受信任的来源(HTML格式的电子邮件和HTML文件)接受HTML,清理它以使其没有任何脚本,指向外部资源的链接以及其他安全性/等等 问题; 然后安全地显示它,同时不丢失基本格式.例如,就像电子邮件客户端使用HTML格式的电子邮件一样,但理想情况下不会重复在该领域中已经发生的347,821错误(到目前为止).:-)

目标是最终通过iframe我们自己的Web界面或通过.Net Windows窗体应用程序中的WebBrowser类(这似乎不安全,可能不那么)向内部用户显示我们感觉舒适的东西,以下示例.

我们认识到其中一些可能会破坏文本的显示; 没关系.

我们将在接收时清理HTML并存储已清理的版本(不要担心存储部分 - SQL注入等 - 我们已经覆盖了这一点).

该软件需要在Windows Server上运行.COM DLL或.Net程序集首选.FOSS显然是首选,但不是交易破坏者.

到目前为止我发现了什么:

  • AntiSamy.Net项目 (但它似乎不再是正在积极开发中,是在主后面的一年-活跃- AntiSamy Java项目).
  • 一些代码来自我们自己的杰夫阿特伍德,大约三年前(哎呀,我不知道他在做什么......).
  • HTML敏捷性包 (通过上面的AntiSamy.Net项目中使用的),这会给我一个健壮的分析器; 然后我可以实现我自己的逻辑来遍历生成的DOM并过滤掉我没有列入白名单的任何内容.敏捷包看起来真的很棒,但我依靠自己的白名单,而不是重复使用某人已经发明的轮子,所以这是对它的反对.
  • 微软反XSS库

你会为这项任务推荐什么?以上之一?别的什么?


例如,我们想删除以下内容:

  • script 分子
  • link,img以及与外部资源相关的此类元素(可能会替换img为"[图像已删除]"或其中一些此类文本)
  • embed,object,applet,audio,video,并尝试创建对象的其他标签
  • onclick 和类似的DOM0事件处理程序脚本代码
  • href关于a触发代码的元素(即使是我们认为可以接受的链接,我们也可能会变成用户必须有意复制并粘贴到浏览器中的明文).
  • __________ (我没有想到的722件事是我想要利用已经存在的东西的原因)

例如,这个HTML:

<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<link rel="stylesheet" type="text/css" …
Run Code Online (Sandbox Code Playgroud)

.net html sanitization html-sanitizing

32
推荐指数
1
解决办法
4380
查看次数

V8和ECMAScript的区别

我在哪里可以找到V8和ECMAScript之间所有差异的列表?例如V8支持const,它不是ECMAScript标准的一部分.

javascript v8

31
推荐指数
1
解决办法
2909
查看次数

IE中CSS变量的解决方法?

我目前正在Outsystems开发一个Web应用程序,我需要自定义CSS,我正在使用变量.我需要保证应用程序跨浏览器工作,包括在Internet Explorer中.IE不支持CSS的变量,你可以从下面的图片中看到此源.

由于我必须使用CSS变量,在IE中使用变量是否有任何解决方法?

css internet-explorer outsystems

28
推荐指数
4
解决办法
3万
查看次数