Javascript 如何从新对象返回值,同时保留其方法
我有这样的代码:Javascript 如何从新对象返回值,同时保留其方法,javascript,Javascript,我有这样的代码: function set(a) { this.foo = function(){ alert('bar'); } return a; } var b = new set([2,3,4]); b; //returns [2,3,4] b.foo(); //undefined function 我希望将数组输入作为新集合的返回值返回,而不必将其附加到属性,例如this.arr=a 如何在不从对象中删除foo方法的情况下实现这一点 function set
function set(a) {
this.foo = function(){
alert('bar');
}
return a;
}
var b = new set([2,3,4]);
b; //returns [2,3,4]
b.foo(); //undefined function
我希望将数组输入作为新集合的返回值返回,而不必将其附加到属性,例如this.arr=a代码>
如何在不从对象中删除foo方法的情况下实现这一点
function set(a) {
var o = {};
o.foo = function(){
alert('bar');
};
return o;
}
应该是您想要的-您不需要参数
应该是您想要的-您不需要参数。如果我正确理解您的目的,您需要:
function set(a) {
a.foo = function(){
alert('bar');
}
return a;
}
var b = new set([2,3,4]);
b.foo(); //alerts
…即。将方法附加到输入,而不是像您那样附加到全局命名空间。如果我正确理解您的目的,您需要:
function set(a) {
a.foo = function(){
alert('bar');
}
return a;
}
var b = new set([2,3,4]);
b.foo(); //alerts
…即。将方法附加到输入,而不是像您那样附加到全局名称空间。我认为您可以这样做
function set(a) {
a.foo = function(){
alert('bar');
}
return a;
}
var b = new set([2,3,4]);
b; //returns [2,3,4]
b.foo(); //this shows alert
我想你可以这样做
function set(a) {
a.foo = function(){
alert('bar');
}
return a;
}
var b = new set([2,3,4]);
b; //returns [2,3,4]
b.foo(); //this shows alert
要保持构造函数干净,并且如果希望将this.foo保留在set()中,可能应该将new set().foo
方法添加到Array.prototype
function set(a) {
this.foo = function(){
alert('bar');
};
return a;
}
Array.prototype.foo=new set().foo;
var b = new set([2,3,4]);
console.log(b); //returns [2,3,4]
b.foo();// alerts 'bar'
要保持构造函数干净,并且如果希望将this.foo保留在set()中,可能应该将new set().foo
方法添加到Array.prototype
function set(a) {
this.foo = function(){
alert('bar');
};
return a;
}
Array.prototype.foo=new set().foo;
var b = new set([2,3,4]);
console.log(b); //returns [2,3,4]
b.foo();// alerts 'bar'
为什么不是a.foo=function?但是您应该删除该上下文中的'new',this
引用窗口对象,因此您实际上是在将foo
附加到全局命名空间。@Nit除非对帖子进行编辑,否则,set()
将作为构造函数调用,因此this
应该引用new
实例,而不是全局对象。为什么不使用a.foo=function?但是您应该删除该上下文中的“new”,因为this
引用窗口对象,所以您实际上是在将foo
附加到全局名称空间。@Nit被作为构造函数调用,因此此
应该引用新的实例,而不是全局对象。实际上,OP希望一个集合包含数组。此外,它还需要返回参数。不是空对象。实际上,OP希望集合包含数组。此外,它还需要返回参数。不是空对象。解决方案看起来很有效,但如果方法仅与我的集合对象相关,我不希望向数组原型添加方法。解决方案看起来有效,但如果方法仅与我的集合对象相关,我不希望向数组原型添加方法。Genius!我怎么没想到!天才!我怎么没想到!