使用jquery $ .extend()时忽略属性?

sti*_*man 11 javascript jquery

有没有一种有效的方法来克隆一个对象但是遗漏了指定的属性?理想情况下,不重写$ .extend函数?

var object = {
  "foo": "bar"
  , "bim": Array [1000]
};

// extend the object except for the bim property
var clone = $.extend({}, object, "bim");
// = { "foo":"bar" }
Run Code Online (Sandbox Code Playgroud)

我的目标是通过不复制我不会使用的东西来节省资源.

Rob*_*b W 11

jQuery.extend 需要无数个参数,因此不可能在不破坏功能的情况下重写它以适合您请求的格式.

但是,您可以使用delete运算符在扩展后轻松删除该属性:

var object = {
    "foo": "bar"
  , "bim": "baz"
};

// extend the object except for the bim property
var clone = $.extend({}, object);
delete clone.bim;
// = { "foo":"bar" }
Run Code Online (Sandbox Code Playgroud)

  • @stinkycheeseman并非没有创建新的实现.这是带有注释的`jQuery.extend`源代码,如果你感兴趣的话:http://james.padolsey.com/jquery/#v=git&fn=jQuery.extend (2认同)