草庐IT

requires_new

全部标签

javascript - `new Error()` 什么时候比 `Error()` 好?

ES5语言规范clearlystatesError(foo)和newError(foo)做同样的事情。但我注意到在野外,较长的newError(foo)形式更为常见。这有什么原因吗?是否存在使用newError(foo)比使用Error(foo)更可取的情况? 最佳答案 Istheresomereasonforthis?这只是总是用new调用构造函数的习惯。一致性规则!即使它们在没有new的情况下工作也是一种很好的做法,并且被多个样式指南和相关工具推荐。顺便说一句,因为ES6Errorissubclassible,及其子类将需要ne

javascript - 令人困惑的 JavaScript 语句 : "var x = new this();"

我以为我理解了JavaScript原型(prototype)对象的概念,以及[[proto]],直到我看到一些关于类继承的帖子。首先,“JavaScriptOOP-聪明的方式”在http://amix.dk/blog/viewEntry/19038查看实现部分:varparent=newthis('no_init');还有JohnResig的精彩博客上的“简单JavaScript继承”。varprototype=newthis();newthis();到底是什么意思?这个声明对我来说毫无意义,因为我的理解是this指向一个对象而不是构造函数。我还尝试在Firebug中测试语句来解决这个

javascript - 为什么使用 {} 而不是 new Object() 并使用 [] 而不是 new Array() 和 true/false 而不是 new Boolean()?

许多人说您应该避免使用newObject、newArray(),而是使用{}。[]和真/假。使用字面量构造来获取对象或数组的新实例而不是使用new有什么好处?我知道Crockford不喜欢新的,但这是主要论点吗? 最佳答案 与使用各自的构造函数相比,对象和数组文字的优点是:更短、更易读更安全:当Array或Object构造函数被重写时,文字仍然有效可能会更快,但它不太可能成为主要考虑因素(任何瓶颈几乎肯定会起源于代码中的其他地方)在数组的情况下,文字还有一个额外的优势:不可能单独使用Array构造函数创建具有单个成员的数组。例如,[

javascript - new 关键字在幕后做了什么?

我很好奇new关键字除了更改this范围所指的内容外,在后台还能做什么。例如,如果我们将使用new关键字使函数在对象上设置属性和方法与仅使函数返回新对象进行比较,那么新对象还有什么额外的作用吗?如果我不想从函数构造函数创建多个对象,这是首选varfoo2=function(){vartemp="test";return{getLol:function(){returntemp;},setLol:function(value){temp=value;}};}();varfoo=newfunction(){vartemp="test";this.getLol=function(){retu

javascript - Require JS 忽略了我的配置

我的脚本目录结构非常简单:/js/由于站点引擎使用干净的URL,我在中使用绝对路径:RequireJS配置:requirejs.config({baseUrl:"/js/libs",paths:{"jquery":"jquery-1.10.1.min","knockout":"knockout-2.2.1","komapping":"knockout.mapping"}});HTML中的某处:require(["jquery","knockout","komapping"],function($,ko,mapping){//...});所以问题是RequireJS完全忽略了baseUr

javascript - ES6 中是否有针对 ES5 `module.exports = require(' ./inner.js')` 的任何一行类比?

//beforemodule.exports=require('./inner.js');//nowadaysexportdefaultfrom'./inner.js';我正在尝试这样做,但babel只允许在es7阶段1中使用proposalfornow.所以现在,我坚持这两行:importstickerfrom'./box-sticker.jsx';exportdefaultsticker;我可以将它们缩短为一个吗? 最佳答案 你应该可以做到export{defaultasdefault}from'./inner.js';//or

javascript - Typescript 中的 new() 是什么?

在官方文档中遇到了new()here关于泛型。这里是代码上下文:functioncreate(c:{new():T;}):T{returnnewc();}上面的代码被转译成下面的JavaScript代码:functioncreate(c){returnnewc();}new()是JavaScript中的非法语法。在TypeScript中它是什么意思?此外,{new():T;是做什么的?}是什么意思?我知道它一定是一种类型,但如何呢? 最佳答案 new()描述了typescript中的构造函数签名。这意味着它描述了构造函数的形状。以{

javascript - Vue单元测试报错: vuex requires a Promise polyfill in this browser

我使用vue-cli创建了一个项目,并在其中添加了vuex和vue-router。我正在尝试为其设置单元测试,但出现以下错误。没有Vuex,它曾经可以工作。PhantomJS2.1.1(MacOSX0.0.0)ERRORError:[vuex]vuexrequiresaPromisepolyfillinthisbrowser.atwebpack:///~/vuex/dist/vuex.js:145:0以下是相关的包版本:"babel-core":"^6.0.0","babel-eslint":"^7.0.0","babel-loader":"^6.0.0","vue":"^2.1.0"

javascript - 即使忘记了 `new`,我什么时候应该自动创建一个对象?

假设我有以下对象构造函数:functionFoo(bar){this.bar=bar;}如果我在没有new关键字的情况下在全局范围内运行函数,那么bar将被设置在调用Foo()的任何范围内在:varfoo=Foo(42);console.log(bar);//42console.log(foo.bar);//ERROR所以我的想法是做这样的事情:functionFoo(bar){if(!(thisinstanceofFoo)){//returnaFooobjectreturnnewFoo(bar);}this.bar=bar;}那样的话,如果我执行newFoo(42)或Foo(42),

javascript - 如何使用 goog.provide 和 goog.require 加载我自己的 js 模块?

我们正在尝试将项目的打包方式从dojo切换到google闭包,但到目前为止我们还没有成功。这是一个简单的例子,说明了我们正在努力完成的事情:goog.require("foo.bar");functionmain(){foo.bar.echo("helloworld")}Thenin/foo/bar.jsIhave:goog.provide("foo.bar");foo.bar.echo=function(s){console.debug(s);}我在firebug中收到的错误如下:goog.requirecouldnotfind:foo.barfooisnotdefined当我查看“