如何从新对象返回值,同时保留其方法

How do I return a value from a new object, whilst keeping its methods

本文关键字:保留 方法 返回值 新对象 对象      更新时间:2023-09-26

所以我有这样的代码:

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) {
  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.foo(); //alerts

。即将方法附加到输入,而不是像以前那样附加到全局命名空间。

function set(a) {
  var o = {};
  o.foo = function(){
    alert('bar');
  };
  return o;
}

应该是你想要的 - 你不需要参数。

为了保持构造函数的清洁,如果你想将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'