Domanda

Impostazione di un descrittore di proprietà come questo:

Object.defineProperty(window, 'someFunction', {
    value: function() { alert('safe'); },
    writable: false,
    enumerable: false,
    configurable: false
});
.

... dovrebbe, per quanto ne so, rendi la proprietà someFunction di window non scrivibile.Funziona per le espressioni di funzione come mi aspetto, se la funzione è assegnata direttamente alla proprietà dell'oggetto ... Fiddle

window.someFunction = function() { alert('boom!'); }
someFunction(); // safe
.

... o assegnato a una variabile globale: Fiddle Tuttavia, non sembra funzionare con dichiarazioni funzione : Fiddle

function someFunction() { alert('boom!'); }
someFunction(); // boom!
.

è questo comportamento intenzionale?Qual è il ragionamento dietro di esso?Questo è documentato ovunque?O sto solo facendo qualche tipo di errore stupido?


.

A proposito, sto usando Chromium 17 per testare questo.La modalità rigorosa non sembra fare alcuna differenza.

È stato utile?

Soluzione

Questo è un bug (vedi bug # 115452) , che ho anche riscontrato quando risponde a Questa domanda .

Controllo di compatibilità: Cassa del test

    .
  • In Firefox 4+, funziona bene.
  • In Chrome 16, funziona bene.
  • in Chrome 17, non funziona.
  • IE8- non ha Object.defineProperty, quindi non funziona
  • In IE9, non funziona.
  • In Safari 5, non funziona.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top