Estoy explorando las API de Oracle APEX JS e identifiqué este comportamiento peculiar.
Cuando intenté anular la función model.setValue incorporada de esta manera
apex.region("emp").widget().interactiveGrid("getViews", "grid").model.setValue = function(){ alert("model set value called"); } console.log(apex.region("emp").widget().interactiveGrid("getViews", "grid").model.setValue);Y obtengo la salida como
function(){ alert("model set value called"); }la función se anuló con éxito y cuando llamo a model.setValue en la cuadrícula, muestra el mensaje de alerta.
Pero cuando hice lo mismo en la función setValue de apex.item
apex.item("P3_NEW") = function(){ alert("model set value called"); } console.log(apex.item("P3_NEW").setValue)la salida es
ƒ (e,t,a){u.call(this,e,t,a),this.afterModify&&this.afterModify(),a||this.element.trigger("change")}la función de JavaScript no se anula y apex.item("P3_NEW").setValue() no emitió la alerta.
¿Qué diferencias de diseño tienen estas dos API que hacen que model.setValue sea mutable y apex.item(...).setValue inmutable?
Creo que me falta un concepto de JS y encontrar una respuesta a esto me llevará a ello. Cualquier orientación es apreciada.
Gracias