2016-11-08 43 views
5

Bu kodda, prototip hala değişebilir.Bir prototipte değişiklikler nasıl önlenir?

Prototiplerdeki değişiklikleri nasıl önleyebilirim? Ben prototip değişiklik yapılmasını önlemek nasıl

var a = {a:1} 
var b={b:1} 
var c = Object.create(a) 
Object.getPrototypeOf(c) //a 
c.__proto__ = b; 
Object.getPrototypeOf(c) //b 
var d = Object.create(null) 
Object.getPrototypeOf(d) //null 
d.__proto__ = b; 
Object.getPrototypeOf(d) //null 
+1

yardımcı bu freeze reference

, kontrol edildiğinde bu ön bilgi/mühürle. – Bergi

+1

'__proto__', kullanımdan kaldırılmıştır. Eğer gerekiyorsa 'Object.setPrototypeOf' kullanın. – Bergi

cevap

5

?

Prototip nesnesinin kendisini mutasyona uğratmaktan bahsetmediğinizi, ancak varolan bir nesnenin prototipinin üzerine yazıldığını sanmıyorum.

var a = {a:1} 
 
var b = {b:1} 
 
var c = Object.create(a) 
 
Object.preventExtensions(c) 
 
console.log(Object.getPrototypeOf(c)) //a 
 
c.__proto__ = b; // Error

Ama bu da ona yeni özellikler eklemek değil anlamına gelir:

Bunu önlemek için Object.preventExtensions() kullanabilirsiniz. Gereksinimlerinize bağlı olarak Object.freeze() veya Object.seal()'u da kullanabilirsiniz, bu da nesneye yapılan değişiklikleri daha da kısıtlar.

Başka yol yoktur.

0

Evet, Object.freeze'ı kullanabiliriz.

Object.freeze() yöntemi bir nesneyi dondurur: yani, yeni özelliklerin eklenmesini engeller; mevcut özelliklerin kaldırılmasını engeller; ve mevcut özelliklerin veya bunların sayılabilirliklerinin, yapılandırılabilirliklerinin veya yazılabilirliklerinin değiştirilmelerini önler. Özünde nesne etkili bir şekilde değişmez hale getirilir. Yöntem donmuş nesneyi döndürür.

var a = {a:1} 
 
var b={b:1} 
 
var c = Object.create(a) 
 
Object.getPrototypeOf(c) //a 
 
Object.freeze(c); 
 
c.__proto__ = b;//throws error now 
 
console.log(Object.getPrototypeOf(c)) //a 
 
var d = Object.create(null) 
 
Object.getPrototypeOf(d) //null 
 
d.__proto__ = b; 
 
Object.getPrototypeOf(d) //null

Umut bu dondurabilirsiniz yani bir prototip her öbürü gibi sadece bir nesnedir

İlgili konular