Javascript新函数构造函数没有't返回所需的值
Javascript new function constructor doesn't return the wanted value
function Add(a, b){
this.a = a, this.b = b;
return this.a + this.b;
}
var add5 = new Add(2, 3); // ? add5 = 5
console.log(add);
"typeof add5"为Object,"add5 instanceof Add"为true。
我的问题是:
- 在这种情况下,如何返回我想要的值5
- 在函数Add中,我显式返回5,为什么我得到返回Add实例
- new Function()是否只返回此实例
1。在这种情况下,如何返回我想要的值5
有一个简单的函数,可以直接调用,不需要new
运算符。
function add(a, b) {
return a + b;
}
document.write(add(2, 3));
2.在函数Add中,我显式返回5,为什么我得到返回Add实例
3.new Function()只返回这个实例吗
由于使用了new
运算符,您可以获得该实例。
3.构造函数返回的对象成为整个新表达式的结果。如果构造函数没有显式返回对象,则使用步骤1中创建的对象。(通常构造函数不会返回值,但如果他们想覆盖正常的对象创建过程,可以选择这样做。)
根据这一点,新实例不会返回基元数据类型。您只能用对象覆盖返回值(this
)。
新操作符用于创建对象。在您的案例中,add5.a
和add5.b
分别填充有2和3。
你应该做以下事情。
function Add(a, b){
this.a = a, this.b = b;
this.result = function(){
return this.a + this.b;
}
}
并像一样使用它
var add5 = new Add(2, 3); // ? add5 = 5
console.log(add5.result());
这不是简单多了吗。。。
function Add(a, b){
return a + b;
}
var add = Add(2, 3); // ? add = 5
console.log(add);
或者如果你想要一个与方法相关的实例
function AddNumbers(a, b){
this.a = a;
this.b = b;
return this;
}
AddNumbers.prototype.add = function(){
var sum = this.a+this.b;
console.log(sum);
return sum;
}
var addObject = new AddNumbers(2, 3); // ? add = 5
addObject.add();
您必须删除'new'关键字,因为这会从该函数中创建一个新对象。只需按以下方式调用函数即可。
function Add(a, b){
this.a = a, this.b = b;
return this.a + this.b;
}
var add = Add(2, 3); // ? add = 5
console.log(add);
相关文章:
- 函数()和新函数()之间的区别
- 从Mongoose结果匿名函数返回父函数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- 返回一个新函数,而不是工厂中的对象
- Javascript映射对象成员以返回新的扁平对象
- 你能调用一个在调用者上下文中返回的函数吗
- 单击从子函数返回父函数
- NodeJS:创建一个hash并返回一个函数的值
- 返回JavaScript函数中的值
- 替换新函数中的 arguments.callee
- Javascript新函数构造函数没有't返回所需的值
- 使用静态函数返回新Promise
- IE7 新函数返回对象而不是函数
- 函数是否无法返回构造函数并创建新实例
- 将新返回命名函数构造函数实例-
- 如何在新函数上返回For函数
- 如何为返回新类对象的函数指定类型
- 我如何从类函数返回新的主干实例
- 新函数返回新函数
- 未捕获的类型错误:对象函数(a){返回新的j(a)}没有方法'has'