pickExclude(obj, keys) { if (!['[object Object]', '[object File]'].includes(Object.prototype.toString.call(obj))) { return {} } return Object.keys(obj).reduce((prev, key) => { if (!keys.includes(key)) { prev[key] = obj[key] } return prev }, {}) },
时间: 2023-12-06 19:45:03 浏览: 29
这是一个函数,功能是从一个对象中排除指定的键(keys)并返回一个新的对象。具体来说,它会接受两个参数:obj和keys。如果obj不是一个对象或者文件,那么函数会返回一个空对象。否则,函数会使用reduce方法遍历obj的所有键,如果这个键不在keys数组中,那么就将它添加到新的对象中。最后,函数返回这个新对象。
举个例子,如果我们有一个对象:
```
const obj = {
name: 'Alice',
age: 25,
email: 'alice@example.com'
}
```
如果我们想要排除name和age这两个键,那么我们可以这样调用这个函数:
```
const excluded = pickExclude(obj, ['name', 'age'])
console.log(excluded) // { email: 'alice@example.com' }
```
这样就会返回一个只包含email键的新对象。
相关问题
object.prototype.tostring.call/apply();
object.prototype.toString.call/apply() 是 JavaScript 中的方法,用于获取一个对象的类型信息。
在 JavaScript 中,每个对象都有一个 toString() 方法,用于将对象转换为字符串。object.prototype.toString.call() 和 object.prototype.toString.apply() 都可以用于调用对象的 toString() 方法。但是由于 toString() 方法是对象原型的方法,不是直接继承的,因此需要通过 call() 或 apply() 来指定 this 对象。
调用 object.prototype.toString.call(obj) 或 object.prototype.toString.apply(obj) 的结果将返回 obj 对象的类型信息。这个类型信息是一个包含对象的类型的字符串,在大多数情况下表示对象的内部 [[Class]] 属性的值。
这个类型信息通常以 "[object 类型]" 的形式返回,其中类型可以是以下之一:
- "[object String]" 表示 obj 是一个字符串。
- "[object Number]" 表示 obj 是一个数字。
- "[object Boolean]" 表示 obj 是一个布尔值。
- "[object Undefined]" 表示 obj 是 undefined。
- "[object Null]" 表示 obj 是 null。
- "[object Object]" 表示 obj 是一个普通的对象。
- "[object Array]" 表示 obj 是一个数组对象。
- "[object Function]" 表示 obj 是一个函数对象。
通过调用 object.prototype.toString.call/apply() 方法,我们可以更准确地判断一个对象的类型,避免了 typeof 操作符的局限性。例如,使用 object.prototype.toString.call([]) 返回的结果为 "[object Array]",可以确定该对象是一个数组。
总之,object.prototype.toString.call/apply() 是一种用于获取对象类型的常用方法,用于更准确地判断对象的类型。
object.prototype.toString.call()怎么用
可以使用 object.prototype.toString.call() 方法来获取一个变量的数据类型。例如,如果要判断一个变量是否为数组,可以使用以下代码:
var arr = [1, 2, 3];
console.log(object.prototype.toString.call(arr)); // [object Array]
如果要判断一个变量是否为对象,可以使用以下代码:
var obj = {name: "John", age: 30};
console.log(object.prototype.toString.call(obj)); // [object Object]
注意,这个方法返回的是一个字符串,需要使用字符串的方法来进行判断。