i messing around "classical" inheritance , i'm running issue. using object.defineproperty() add properties livingthing "class". want have default value, along property getter/setter.
http://jsfiddle.net/fmpeyton/329ntgcl/
i running following error:
uncaught typeerror: invalid property. property cannot both have accessors , writable or have value, #<object> why getting error , best approach have default value , getter/setter property, using object.defineproperty()?
use function scoped variable defined property , set variable's initial value default:
function livingthing(){ self = this; var isalive = true; object.defineproperty(self, 'isalive', { get: function(){ return isalive; }, set: function(newvalue){ isalive = newvalue; }, configurable: true }); self.kill = function(){ self.isalive = false; }; } http://jsfiddle.net/329ntgcl/5/
writable isn't necessary because have setter. that's what's causing error. can either have value/writable (data descriptor) or get/set (accessor descriptor).
as result, when call var l = new livingthing, l.isalive == true , after call l.kill(), l.isalive == false
Comments
Post a Comment