这里说明https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function函数对象实例的构造函数属性"指定创建对象原型的函数".这很令人困惑,所以Object.constructor是"创建对象原型的函数"?究竟什么对象是"一个对象"?
我试图理解为什么Object.constructor的构造函数本身?
如此:Object.constructor === Object.constructor.constructor //为什么?
编辑:我发现TJ Crowder的答案很好但是他的话的措辞非常含糊(在第一次阅读时很难理解,至少对我而言).这是改写的答案:
1)Object是Function的一个实例
2)对象没有一个叫做构造函数的属性所以当我们调用Object.constructor时,它实际上给了我们Object.[[prototype]].constructor(aka Object .__ proto __.constructor).
3)Object.constructor(又名Object .__ proto __.constructor)是Function的一个实例.
4)由于Object和Object.constructor(又名Object .__ proto __.constructor)都是Function的实例,因此它们都有__ proto __属性,它引用同一个对象.换句话说,Object .__ proto __ === Object.constructor .__ proto __(aka Object .__ proto __.constructor._ proto _)
5)行Object.constructor === Object.constructor.constructor实际上等于对象.__ …
是否有一个JavaScript项目专注于普通浏览器中的原生标准化ECMAScript 5?
作为参考,规范化这样的表:http://kangax.github.com/es5-compat-table/
我知道有些包装器可以添加一些ES5功能,如果它们存在则可以回退到原生实现.但我还没有看到一个专注于本机实现和规范化的项目.有什么想法吗?
我正在阅读ECMA 262 5规范的执行上下文/词汇环境部分.它陈述如下:(强调添加)
词汇环境是一种规范类型,用于根据ECMAScript代码的词法嵌套结构定义标识符与特定变量和函数的关联.词汇环境由环境记录和外部词汇环境的可能空引用组成.通常,词汇环境与ECMAScript代码的某些特定语法结构相关联,例如TryStatement 的FunctionDeclaration,WithStatement或Catch子句,并且每次评估此类代码时都会创建新的词法环境.
我注意到它没有说明为函数表达式创建词法环境.是为函数表达式创建的词法环境,还是仅为函数声明创建的?我错过了什么吗?
编辑:我注意到函数代码将有自己的执行上下文,这就是为什么我也很困惑为什么在词法环境部分没有提到函数表达式.
我有两种不同语言的正则表达式,它们产生相同的奇数结果(javaScript和Flash).我想知道的不是如何解决它,而是为什么会发生这种行为?
正则表达式:
\[(\\{2}|\\\]|[^\]])*\]
Run Code Online (Sandbox Code Playgroud)
这里的目标是匹配一个括号中的字符串,并确保我不会停留在转义括号中.
如果我有文本输入[abcdefg]它是正确匹配的,但作为捕获组的一部分返回的唯一内容是g,在我期望的位置abcdefg.如果我将表达式更改为
\[((?:\\{2}|\\\]|[^\]])*)\],那么我得到我想要的结果.
那为什么会这样呢?这会在其他语言中保持一致吗?
注意:简化表达式以\[([^\]])*\]产生相同的问题.
javascript regex actionscript-3 capturing-group ecmascript-5
根据Google JavaScript样式指南,函数声明不应在块中声明,因为它不是ECMAScript的一部分.但是,我并不完全清楚什么算作块.
具体来说,我有一个构造函数,我想在该构造函数的范围内定义一个函数.这是否算作一个块内的函数,因为它在一组{}内?如果是这样,这是否意味着每个函数声明必须是全局的?
一些好的衡量标准:
function Constructor() {
function Shout () { alert('THE BEST UX IS IN ALL CAPS.'); }
}
Run Code Online (Sandbox Code Playgroud)
function Constructor() {
var Shout = function () { alert('THE BEST UX IS IN ALL CAPS.'); };
}
Run Code Online (Sandbox Code Playgroud) 我已经使用npm安装了traceur并且设法编译了一个简单的ES6脚本.我的问题是生成的代码特定于node.js
我知道traceur可以从浏览器运行,但我想进一步优化.有没有办法从命令行(节点)运行traceur,方式与lesscss的工作方式类似?
我目前正在开发JavaScript解析器并研究ECMAScript 5.1规范.这是一个令我困惑的问题.
§ 11.2左手侧的表达式定义了以下NewExpression产品:
NewExpression :
MemberExpression
new NewExpression
Run Code Online (Sandbox Code Playgroud)
如果我正确地阅读它,那么NewExpression可能是类似的东西
new new Something
Run Code Online (Sandbox Code Playgroud)
(实际上,任何数量的news.)
这让我很困惑.怎么可能new Something再次回报你能做的任何事情new?有可能吗?
我偶然发现了人们选择称之为Prologue Directives的东西.更常见的是"使用严格"; JavaScript中的字符串文字.我已经知道了.但共同点是Prologue Directive.这是什么?关于这个主题的文献很少.最好的一个是我联系的问题.
我的问题是通用的:
这些是什么?
它们可以用于什么?
谁使用它们,为什么?
我能做到吗?
我是不是该?
我正在深入研究for循环,并ExpressionNoIn在规范中遇到http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.3
这是什么意思?
为什么TypeScript允许重复组件implements?
import { Component,OnInit } from '@angular/core';
export class CreateVersionComponent implements OnInit, OnInit, OnInit { }// no error
export class CreateVersionComponent extends OnInit, OnInit, OnInit { }// getting error
Run Code Online (Sandbox Code Playgroud)
但它在组件扩展时抛出重复的标识符错误.
那么打字稿在实现时接受重复组件的原因是什么?我们需要使用哪种情况?
ecmascript-5 ×10
javascript ×9
angular ×1
ecma262 ×1
ecmascript-6 ×1
inheritance ×1
node.js ×1
oop ×1
regex ×1
scope ×1
traceur ×1
typescript ×1