我有一个构造函数,我不知道它需要的参数数量,例如:function someCtor(a,b,c){var that = this;that.a = a;that.b = b;that.c = c; }我需要创建一个函数,它将使用动态数量的参数返回该构造函数的实例:function makeNew(ctor, arguments){// this doesn't work, but it shows what I'm trying to achievereturn new ctor.apply(arguments); }我想使用该函数将动态参数传递给构造函数,如下所示:var instanceOfCtor = makeNew(someC...
我知道有多种方法可以在javascript中创建一个对象,我一直在阅读对象文字语法通常是首选. (正确?) 我无法弄清楚的是,是否有理由使用任何其他方法来创建对象,例如自定义构造函数(var p = new Person(“Adam”))?仅当我想要私有变量或向其原型添加方法或属性时才使用自定义构造函数是真的吗?文字中没有办法做到这些吗?解决方法:如果要创建对象实例,可以使用自定义构造函数,类似于Java. 例如:function MyObj(x){this.x = x; }MyOb...
我有这个代码:var MyClass = function(b) {this.a = b;this.getA = function() {return that.a;} }var SecondClass = function(b) {this.prototype = new MyClass(b);this.getB = function() {return 6;} }var a = new SecondClass(2); console.log(a.getA());输出告诉我a没有名为getA()的方法 我假设在SecondClass的构造函数中执行this.prototype = new MyClass()会导致它从MyClass的inhert方法? 我确信有更好的方法可以做到这一...
所以我刚刚从React框架下载了源代码,我在终端中收到了这个错误:ERROR in ./src/components/TextEditor.jsModule build failed: SyntaxError: Unexpected token (24:8)22 | 23 | // Set the initial state when the app is first constructed. > 24 | state = {| ^25 | state: initialState26 | }27 | 我的问题是,为什么人们会像这样设置React Component的状态?如果某些人的错误会有什么好处?另外,我可以使用B...
我有一个用Javascript ES6编写的课程.当我尝试执行nodemon命令时,我总是看到此错误TypeError:类构造函数客户端无法在没有’new’的情况下调用 完整错误如下:/Users/akshaysood/Blockchain/fabricSDK/dist/application/Transaction.js:45return (0, _possibleConstructorReturn3.default)(this, (FBClient.__proto__ || (0, _getPrototypeOf2.default)(FBClient)).call(this, props));^TypeError: Class constructor Client canno...
这是一种在JavaScript中实现方法覆盖的良好/安全的跨浏览器方式吗? :function Person(firstName, lastName) {this.firstName = firstName;this.lastName = lastName; };Person.prototype.sayHi = function() {return "Hi, my name is " + this.firstName; };function Employee(firstName, lastName, position) {Person.call(this, firstName, lastName);this.position = position; };Employee.prototype = Object.create(Person....
我是JavaScript的新手,为了理解这个概念,我已经阅读了许多关于原型和构造函数的文章,但是无论我走到哪里,我都会感到困惑. 当人们同时谈论构造函数和原型时会产生混淆. 在以下示例中var employee = function Emp(name) {this.name = name; } var jack = new employee("Jack Dwain");employee.constructor //gives Function()employee.prototype // gives Emp {}employee.prototype.constructor //gives Emp(name)jack.constructor ...
我试图使用新的Array()构造函数与map,以创建一个单行代码,创建一个元素列表.像这样的东西:let arr = new Array(12).map( (el, i) => {console.log('This is never called');return i + 1; }); 阅读docs,行为是有道理的.Basically docs say that callback of map will be executed even for declared undefined values in array, but not for example when creating empty Arrays like the code before.所以这应该工作:var arr = ...
ES6引入了一个shorthand notation来初始化具有函数和属性的对象.// ES6 shorthand notation const obj1 = {a(b) {console.log("ES6: obj1");} };// ES5 var obj2 = {a: function a(b) {console.log("ES5: obj2");} };obj2.a(); obj1.a();new obj2.a(); new obj1.a(); 但是,正如您所看到的,这些不同的符号表现不同.如果我在浏览器中做了新的obj1.a()(测试过Chrome和Firefox),我会得到一个TypeError:obj1.a不是构造函数. new obj2.a...
var express = require('express'); var app = express();这就是我们创建快速应用程序的方式.但这是什么’快递()’?它是方法还是构造函数?它从何而来??解决方法:Is it a method or a constructor? 无论;这是一个功能,虽然如果你说“方法”我认为没有人会给你一个困难的时间. 方法是附加到对象的函数.在JavaScript中,方法主要是通过对象属性引用的函数. (更新:从ES2015开始,如果你使用方法语法来创建它们,它们会比它更多,因为...
在this博客作者说下面的函数是一个构造函数:function Cat(name, color) {this.name = name;this.color = color; } Cat.prototype.age = 0;var catC = new Cat("Fluffy", "White");Cat函数的实例具有名称和颜色属性.这是普通函数和构造函数之间的唯一区别吗?解决方法:构造函数是正常函数. 这里有什么区别的是使用new运算符,它使函数中的上下文(this)成为新实例,从而让它获取两个属性,并返回这个新实例. 如果没有new运算符,则上下文...
Function ConstrA () {EventEmitter.call(this); } util.inherits(ConstrA, EventEmitter);VSFunction ConstrA() {} util.inherits(ConstrA, EventEmitter);EventEmitter.call(this)是否需要这样做?解决方法:Is there something that the EventEmitter.call(this) does that is required?Apparently,是的:function EventEmitter() {EventEmitter.init.call(this); } …EventEmitter.init = function() {this.domain = null;if (E...
我有一种情况需要检查构造函数(X)在其原型链中是否有另一个构造函数(Y)(或者是Y本身). 执行此操作的最快方法可能是(new X())instanceof Y.在这种情况下,这不是一个选项,因为有问题的构造函数可能会在没有有效参数的情况下实例化. 我考虑的下一个方法是:const doesInherit = (A, B) => {while (A) {if (A === B) return true;A = Object.getPrototypeOf(A);}return false; }这是行得通的,但我无法摆脱这种感觉,即我错过了一些更简单...
我发现有两种方法可以在类组件中声明状态,如下所示class App extends Component {constructor(props) {super(props);this.state = {name: 'John'}}render() {return <div>{this.state.name}</div>}}和class App extends Component {state = {name: 'John'}render() {return <div>{this.state.name}</div>}}这两者有什么区别?解决方法:它们大致相同.显着的区别在于第二个示例中的初始化程序在构造函数之前执行. 第二种方法使用cl...
这个问题类似于When using React Is it preferable to use fat arrow functions or bind functions in constructor?但有点不同.您可以在构造函数中将函数绑定到此函数,或者只在构造函数中应用箭头函数.请注意,我只能在项目中使用ES6语法. 1.class Test extends React.Component{constructor(props) {super(props);this.doSomeThing = this.doSomeThing.bind(this);}doSomething() {} }2.class Test extends React.Component{constr...