Javascript中的for in循环和hasOwnProperty结合使用_javascript技巧
与in操作符相比,for in 在循环对象的属性时也会遍历原型链,for in 不会读取不可枚举属性,如数组的length属性。 小结 当检测某个对象是否拥有某个属性时,hasOwnProperty 是唯一可以完成这一任务的方法,在 for in 循环时,建议增加 hasOwnProperty 进行判断,可以有效避免扩展本地原型而引起的错误。
与in操作符相比,for in 在循环对象的属性时也会遍历原型链,for in 不会读取不可枚举属性,如数组的length属性。
// 扩展 Object.prototype
Object.prototype.bar = 1;
var foo = {moo: 2};
for(var i in foo) {
console.log(i); // 输出 bar 和 moo
}
我们不可能改变 for in 循环的行为,当需要对循环体内某些属性进行过滤时,可以利用Object.prototype的hasOwnProperty方法来完成。
提示:因为 for in 循环总是遍历整个原型链,所以当遍历多继承的对象时效率较低。
使用 hasOwnProperty 进行过滤
// 仍旧针对上例的foo对象
for (var i in foo) {
if (foo.hasOwnProperty(i)) {
console.log(i);
}
}
例子中因为使用了hasOwnProperty,最终输出moo;如果忽略 hasOwnProperty ,代码将会输出非预期结果,因为本地原型(如Object.prototype)已经被扩展了。
Prototype框架就是扩展Javascript原始对象的一个类库,并被广泛使用,其缺点也很明显,当框架引入后,如果不使用 hasOwnProperty 进行过滤判断,输出结果保证不是你想要的。
最佳实践
推荐在 for in 时,总是使用 hasOwnProperty 进行判断,没人可以保证运行的代码环境是否被污染过。
hasOwnProperty
为了检查某个对象是否拥有不在原型链上的自定义属性,就有必要用到 hasOwnProperty 方法,任何一个对象都具有该方法,它继承自 Object.prototype。
提示:我们无法完全检测某个属性是否是undefined,因为属性有可能存在,但其值为undefined。hasOwnProperty 是Javascript中唯一一个可以处理对象属性而不遍历原型链的方法。
// 扩展 Object.prototype
Object.prototype.bar = 1;
var foo = {goo: undefined};
foo.bar; // 1
'bar' in foo; // true
foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true
只有 hasOwnProperty 给出了正确的预期结果,当遍历对象的属性时这是很有必要的,没有其它办法来排除定义在对象原型链上的属性。
hasOwnProperty 作为属性
Javascript 并没有保护 hasOwnProperty 为关键字或保留字,因此,如果某个对象拥有同名的属性,就有必要利用扩展的 hasOwnProperty 来获取正确结果。
var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};
foo.hasOwnProperty('bar'); // 总是返回 false
// 使用另一个 hasOwnProperty 并将 this 设置为 foo 来调用它
{}.hasOwnProperty.call(foo, 'bar'); // true
小结
当检测某个对象是否拥有某个属性时,hasOwnProperty 是唯一可以完成这一任务的方法,在 for in 循环时,建议增加 hasOwnProperty 进行判断,可以有效避免扩展本地原型而引起的错误。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Kernelsecuritycheckfailure (échec de la vérification du noyau) est un type de code d'arrêt relativement courant. Cependant, quelle qu'en soit la raison, l'erreur d'écran bleu rend de nombreux utilisateurs très angoissés. Laissez ce site présenter soigneusement 17 types de solutions aux utilisateurs. 17 solutions à l'écran bleu kernel_security_check_failure Méthode 1 : Supprimer tous les périphériques externes Lorsqu'un périphérique externe que vous utilisez est incompatible avec votre version de Windows, l'erreur d'écran bleu Kernelsecuritycheckfailure peut se produire. Pour ce faire, vous devez débrancher tous les périphériques externes avant d'essayer de redémarrer votre ordinateur.

Win10 Skype peut-il être désinstallé ? C'est une question que de nombreux utilisateurs veulent savoir, car de nombreux utilisateurs constatent que cette application est incluse dans le programme par défaut de leur ordinateur et craignent que sa suppression affecte le fonctionnement du système. ce site aide les utilisateurs Examinons de plus près comment désinstaller Skype Entreprise dans Win10. Comment désinstaller Skype Entreprise dans Win10 1. Cliquez sur l'icône Windows sur le bureau de l'ordinateur, puis cliquez sur l'icône des paramètres pour entrer. 2. Cliquez sur "Appliquer". 3. Entrez « Skype » dans la zone de recherche et cliquez pour sélectionner le résultat trouvé. 4. Cliquez sur "Désinstaller". 5

Comment utiliser for pour trouver n factorielle : 1. Utilisez l'instruction "for (var i=1;i<=n;i++){}" pour contrôler la plage de parcours de la boucle sur "1~n" 2. Dans la boucle ; body, utilisez "cj *=i" Multipliez les nombres de 1 à n et attribuez le produit à la variable cj 3. Une fois la boucle terminée, la valeur de la variable cj est la factorielle de n, puis affichez-la.

Différences : 1. for parcourt chaque élément de données via l'index, tandis que forEach parcourt les éléments de données du tableau via le programme sous-jacent JS ; 2. for peut terminer l'exécution de la boucle via le mot-clé break, mais forEach ne le peut pas ; .for peut contrôler l'exécution de la boucle en contrôlant la valeur de la variable de boucle, mais forEach ne peut pas ; 4. for peut appeler des variables de boucle en dehors de la boucle, mais forEach ne peut pas appeler des variables de boucle en dehors de la boucle ; est supérieur à forEach.

hasOwnProperty est une méthode sur le prototype d'objet intégré de JavaScript (Object.prototype), qui est utilisée pour vérifier si les propres propriétés de l'objet contiennent la propriété spécifiée, plutôt que les propriétés héritées de sa chaîne de prototypes. La syntaxe de base est "obj.hasOwnProperty(prop)".

Quelles sont les structures de contrôle de flux courantes en Python ? En Python, la structure de contrôle de flux est un outil important utilisé pour déterminer l'ordre d'exécution du programme. Ils nous permettent d'exécuter différents blocs de code en fonction de différentes conditions, ou d'exécuter un bloc de code de manière répétée. Ce qui suit présentera les structures de contrôle de processus courantes en Python et fournira des exemples de code correspondants. Instructions conditionnelles (if-else) : les instructions conditionnelles nous permettent d'exécuter différents blocs de code en fonction de différentes conditions. Sa syntaxe de base est la suivante : if condition 1 : #when condition

Introduction Dans le développement réel d'un projet d'entreprise, tout le monde devrait être familier avec l'opération consistant à supprimer les éléments qui ne remplissent pas les conditions d'une liste donnée, n'est-ce pas ? De nombreux élèves peuvent immédiatement penser à de nombreuses façons d’y parvenir, mais toutes les méthodes auxquelles vous pensez sont-elles inoffensives pour les humains et les animaux ? De nombreuses opérations apparemment normales sont en réalité des pièges, dans lesquels de nombreux novices peuvent tomber s’ils ne font pas attention. Si malheureusement une exception est levée et qu'une erreur est signalée lors de l'exécution du code, c'est une bénédiction. Au moins, le code peut être découvert et résolu à temps sans qu'une erreur ne soit signalée. Cependant, divers problèmes étranges apparaissent inexplicablement dans l'entreprise. logique. C'est plus tragique. Parce que si vous n'y prêtez pas attention, cela peut entraîner des dangers cachés pour les affaires ultérieures. Alors, quelles sont les modalités de mise en œuvre ? Quelles implémentations pourraient

Python prend en charge les boucles et sa syntaxe est légèrement différente des autres langages (tels que JavaScript ou Java). Le bloc de code suivant montre comment utiliser une boucle for en Python pour parcourir les éléments d'une liste : L'extrait de code ci-dessus imprime trois lettres sur des lignes séparées. Vous pouvez limiter la sortie à la même ligne en ajoutant une virgule "," après l'instruction print (s'il y a plusieurs caractères spécifiés à imprimer, ils seront "retournés à la ligne"), le code est le suivant : Lorsque vous souhaitez affichage sur une ligne au lieu de plusieurs lignes. Pour le contenu texte, vous pouvez utiliser le code sous la forme ci-dessus. Python fournit également des fonctionnalités intégrées
