MCPcopy Create free account
hub / github.com/buke/quickjs-go / DefinePropertyGetSet

Method DefinePropertyGetSet

value.go:655–684  ·  view source on GitHub ↗

DefinePropertyGetSet defines an accessor property by name.

(name string, getter *Value, setter *Value, flags int)

Source from the content-addressed store, hash-verified

653
654// DefinePropertyGetSet defines an accessor property by name.
655func (v *Value) DefinePropertyGetSet(name string, getter *Value, setter *Value, flags int) bool {
656 if !v.isAlive() {
657 return false
658 }
659 if getter != nil && !getter.belongsTo(v.ctx) {
660 return false
661 }
662 if setter != nil && !setter.belongsTo(v.ctx) {
663 return false
664 }
665 atom := v.ctx.NewAtom(name)
666 defer atom.Free()
667
668 getterRef := C.JS_NewUndefined()
669 setterRef := C.JS_NewUndefined()
670 if getter != nil {
671 // JS_DefinePropertyGetSet consumes getter/setter values.
672 getterRef = C.JS_DupValue(v.ctx.ref, getter.ref)
673 }
674 if setter != nil {
675 // JS_DefinePropertyGetSet consumes getter/setter values.
676 setterRef = C.JS_DupValue(v.ctx.ref, setter.ref)
677 }
678
679 ret := C.JS_DefinePropertyGetSet(v.ctx.ref, v.ref, atom.ref, getterRef, setterRef, C.int(flags))
680 if ret < 0 {
681 return false
682 }
683 return ret == 1
684}
685
686// OwnProperty gets a full own property descriptor by name.
687func (v *Value) OwnProperty(name string) (*PropertyDescriptor, bool) {

Calls 4

isAliveMethod · 0.95
FreeMethod · 0.95
belongsToMethod · 0.80
NewAtomMethod · 0.80