Bir prototipte bir alıcıyı tanımlayan bir kodum var (ancak ilgili ise ayarlayıcı yoksa). Geri dönen değer% 99.99 oranında doğrudur; bununla birlikte, amaç, belirli bir nesne için farklı bir değere değerlendirmek üzere özelliği ayarlamaktır. o atanabilir olan öyle ki mülkiyet x, varolan nesne için geçersiz kılınabilir nasıl Bir prototipte tanımlanmış (get-) özelliği nasıl "geçersiz kılınır"?
foo = {} Object.defineProperty(foo, "bar", { // only returns odd die sides get: function() { return (Math.random() * 6) | 1; } }); x = Object.create(foo); x.bar // => eg. 5 x.bar = 4 // by fair dice roll x.bar // nope => eg. 3
, (örn. varsayılan özellik davranışı vardır)?
Ek: x tanımlanan yeni bir özellik olsa da (değer veya/set olsun), ben "bar" var durağında [prototip] bir özelliğinin davranışı için bir yoldur ve açarsanız arıyorum Belirli bir örnek için normal/ad-hoc özellik geri dönün. kullanarak
Zeki. Soruya bazı düzenlemeler yaptım (esas olarak bir cümlecik/cümle sonunda). Özellikle, belirli bir örnekte özellik tanımını basitçe "kaldırmanın" bir yolu var mı? – user2864740
@ user2864740: Hayır, örnekte prototipin özelliğini gizleyen bir özellik oluşturmanız gerekiyor; Eğer istediğiniz gibi olmasaydı (tanımlanamaz hale getirir), her zaman "undefined" i dönüştürebilirsiniz: Object.defineProperty (x, "bar", {value: undefined}) ; –
@ user2864740: İkinci bir snippet ekledim; Soruyu yukarıdaki yorumu okuyarak, biraz farklı olduklarını düşünüyorum. HTH. –