Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 类似于$.extend但不添加新属性的函数_Jquery - Fatal编程技术网

Jquery 类似于$.extend但不添加新属性的函数

Jquery 类似于$.extend但不添加新属性的函数,jquery,Jquery,我想我见过这样的jquery函数,但找不到它 var x = {a:1, b:2}; var y = {a:5, c:3}; var z = $.extend({}, x, y); // {a: 5, b: 2, c: 3} // want a similar jquery function which returns {a: 5, b: 2} // that is, returns only attributes which x has (a,b), but adds no n

我想我见过这样的jquery函数,但找不到它

var x = {a:1, b:2};
var y = {a:5,     c:3};

var z = $.extend({}, x, y);   // {a: 5, b: 2, c: 3}

// want a similar jquery function which returns {a: 5, b: 2}
// that is, returns only attributes which x has (a,b), but adds no new attributes (c)

在这里编写自己的方法可能更容易

通过Y的所有道具并覆盖X

for (var yItem in Y) {
  if (X.hasOwnProperty(yItem)) { 
    X[yItem] = Y[yItem];
  }
}
varx={a:1,b:2};
变量Y={a:5,c:3};
for(Y中的变量yItem){
如果(X.hasOwnProperty(yItem)){
X[yItem]=Y[yItem];
}
}

警报(JSON.stringify(X))
只需使用
Object.assign()
Object.defineProperty
共享另一个解决方案即可

varx={a:1,b:2};
变量y={a:5,c:3,d:5};
Object.leftJoin=函数(leftObj,rightObj){
var acceptKeyList=Object.keys(leftObj);
var returnObj={};
for(对象的变量键。键(rightObj)){
if(acceptKeyList.indexOf(key)<0){
Object.defineProperty(rightObj,key{
可枚举:false
});
}
}
return Object.assign(returnObj、leftObj、righObj);
}

log(Object.leftJoin(x,y))…那么您的问题是什么?是否有类似的jquery函数返回
{a:5,b:2}
?用于将每个属性的enumerable设置为false,并将其他属性的enumerable设置为true。然后,使用合并它们。这将是一个非常酷的内置函数。我会调查的。@nfnneil是的,例如x是插件的默认设置,人们用他们的设置y来调用插件。在插件中,您希望忽略人们提供的任何未知参数。当然,当您编写插件时,您就知道支持哪些参数。但如果您在开始时将所有已知参数定义为默认x(许多人都这样做),然后合并调用方的参数y和踢出x中未定义的属性,则不会意外使用不受支持的属性。我想我现在需要写我自己的方法。