Jquery 类似于$.extend但不添加新属性的函数
我想我见过这样的jquery函数,但找不到它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
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中未定义的属性,则不会意外使用不受支持的属性。我想我现在需要写我自己的方法。