безопасность — Почему этот код не загрязняет прототип в JavaScript?

Почему этот код не загрязняет прототип в JavaScript?

Я смотрел несколько видео о загрязнении прототипа в JavaScript, кажется, что мой код должен быть затронут, но тестирование кода не работает:

 // jQuery mock var $ = { isArray: (x) ={amp}gt; x instanceof Array }; var Clone = { clone_object: function(object) { var tmp = {}; if (typeof object === 'object') { if ($.isArray(object)) { return this.clone_array(object); } else if (object === null) { return object; } else { for (var key in object) { if ($.isArray(object[key])) { tmp[key] = this.clone_array(object[key]); } else if (typeof object[key] === 'object') { tmp[key] = this.clone_object(object[key]); } else { tmp[key] = object[key]; } } } } return tmp; }, clone_array: function(array) { if (!is_function(Array.prototype.map)) { throw new Error("Your browser don't support ES5 array map "   'use es5-shim'); } return array.slice(0).map(function(item) { if (typeof item === 'object') { return this.clone_object(item); } else { return item; } }.bind(this)); } }; var clone = function(object) { return Clone.clone_object(object); }; var x = JSON.parse('{"__proto__": {"foo": 10}}'); console.log(x); var y = clone(x); console.log(y); var z = {}; console.log(z.foo); 

Является ли загрязнение прототипа чем-то, что больше не работает, или есть проблема с моим кодом? Если проблема связана с кодом, что нужно изменить, чтобы при вызове функции-клона произошло загрязнение?

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector