diff --git a/src/jio.storage/erp5storage.js b/src/jio.storage/erp5storage.js
index 77f201ff563108db5bab799751ef55de9e0899a2..82d423f29d22d0e3def3054d1eabef8906633180 100644
--- a/src/jio.storage/erp5storage.js
+++ b/src/jio.storage/erp5storage.js
@@ -26,6 +26,10 @@
 ], function (RSVP, jIO, URI) {
   "use strict";
 
+  var hasOwnProperty = Function.prototype.call.bind(
+    Object.prototype.hasOwnProperty
+  );
+
   function ERP5Storage(spec) {
     if (typeof spec.url !== "string" || !spec.url) {
       throw new TypeError("ERP5 'url' must be a string " +
@@ -95,7 +99,7 @@
           key;
 
         for (key in metadata) {
-          if (metadata.hasOwnProperty(key)) {
+          if (hasOwnProperty(metadata, key)) {
             // XXX Not a form dialog in this case but distant script
             data.append(key, metadata[key]);
           }
@@ -135,10 +139,10 @@
         data.append(renderer_form.form_id.key,
                     renderer_form.form_id['default']);
         for (key in metadata) {
-          if (metadata.hasOwnProperty(key)) {
+          if (hasOwnProperty(metadata, key)) {
             if (key !== "_id") {
               // Hardcoded my_ ERP5 behaviour
-              if (renderer_form.hasOwnProperty("my_" + key)) {
+              if (hasOwnProperty(renderer_form, "my_" + key)) {
                 data.append(renderer_form["my_" + key].key, metadata[key]);
               } else {
                 throw new Error("Can not save property " + key);