如果我理解正确,ECMAScript 5具有类型的filter()
原型Array
,但没有Object
类型的原型。
如何在JavaScript中实现filter()
for for Object
?
假设我有这个对象:
var foo = {
bar: "Yes"
};
我想写一个filter()
适用于Object
s的:
Object.prototype.filter = function(predicate) {
var result = {};
for (key in this) {
if (this.hasOwnProperty(key) && !predicate(this[key])) {
result[key] = this[key];
}
}
return result;
};
当我在以下演示中使用它时,此方法有效,但是当我将其添加到使用jQuery 1.5和jQuery UI
1.8.9的站点时,在FireBug中出现JavaScript错误。
Object.prototype.filter = function(predicate) {
var result = {};
for (key in this) {
if (this.hasOwnProperty(key) && !predicate(this[key])) {
console.log("copying");
result[key] = this[key];
}
}
return result;
};
var foo = {
bar: "Yes",
moo: undefined
};
foo = foo.filter(function(property) {
return typeof property === "undefined";
});
document.getElementById('disp').innerHTML = JSON.stringify(foo, undefined, ' ');
console.log(foo);
#disp {
white-space: pre;
font-family: monospace
}
<div id="disp"></div>
永远不要扩展Object.prototype
。
您的代码将发生可怕的事情。事情会破裂。您正在扩展 所有 对象类型,包括对象文字。
您可以尝试以下简单示例:
// Extend Object.prototype
Object.prototype.extended = "I'm everywhere!";
// See the result
alert( {}.extended ); // "I'm everywhere!"
alert( [].extended ); // "I'm everywhere!"
alert( new Date().extended ); // "I'm everywhere!"
alert( 3..extended ); // "I'm everywhere!"
alert( true.extended ); // "I'm everywhere!"
alert( "here?".extended ); // "I'm everywhere!"
而是创建一个传递对象的函数。
Object.filter = function( obj, predicate) {
let result = {}, key;
for (key in obj) {
if (obj.hasOwnProperty(key) && !predicate(obj[key])) {
result[key] = obj[key];
}
}
return result;
};
主要内容:JS 创建对象,访问对象的属性,设置修改对象的属性,JS 删除对象的属性,JS 调用对象的方法JavaScript 是一种面向对象的编程语言,在 JavaScript 中几乎所有的东西都是对象。因此,要想有效的使用 JavaScript,首先需要了解对象的工作原理以及如何创建并使用对象。 我们可以将对象看作是一个属性的无序集合,每个属性都有一个名称和值(键/值对)。通过《 JS数据类型》一节我们知道,数组是值的集合,每个值都有一个数字索引(从零开始,依次递增)。对象类似与数组,不同的是
对象 指包含数据和用于处理数据的指令的数据结构. 对象有时也指现实世界中的一些事, 例如在赛车游戏当中一辆车或者一幅地图都可以是一个对象。—— MDN JavaScript 中的对象由属性和方法组成。 属性可以是任意 JavaScript 中的数据类型,方法则是一个函数。 1. 创建对象 对象的格式如下: { prop1: 'value1', prop2: 666, prop3: {}
问题内容: 就像是 这是我想象的格式,但事实并非如此。什么会退回到对象的父级? 问题答案: JavaScript本身不提供此功能。而且我怀疑您是否可以创建这种类型的功能。例如: 鲍比属于谁?
本文向大家介绍JavaScript中的Array 对象(数组对象),包括了JavaScript中的Array 对象(数组对象)的使用技巧和注意事项,需要的朋友参考一下 1、创建Array对象方法: --->var arr = [1,2,3];//简单的定义方法 此时可以知道 此时可以知道: 2、Array对象属性 Array常见的属性有三个:constructor、length和prototyp
问题内容: 我有一个JavaScript对象,是否有内置的或公认的最佳实践方法来获取此对象的长度? 问题答案: 最可靠的答案(即,在引起最少的错误的同时,捕捉您要尝试做的事情的意图)将是: JavaScript中有一种约定,您无需向Object.prototype添加任何内容,因为它可能会破坏各种库中的枚举。不过,向Object添加方法通常是安全的。 更新,以及ES5及更高版本的[广泛部署。 对于
主要内容:history 对象中的属性,history 对象中的方法JavaScript history 对象中包含了用户在浏览器中访问过的历史记录,其中包括通过浏览器浏览过的页面,以及当前页面中通过 加载的页面。我们可以通过 window 对象中的 history 属性来获取 history 对象,由于 window 对象是一个全局对象,因此在使用 时可以省略 window 前缀,例如 可以简写为 。 history 对象中的属性 下表中列举了 JavaScri