DefinePropertyGetSet defines an accessor property by name.
(name string, getter *Value, setter *Value, flags int)
| 653 | |
| 654 | // DefinePropertyGetSet defines an accessor property by name. |
| 655 | func (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. |
| 687 | func (v *Value) OwnProperty(name string) (*PropertyDescriptor, bool) { |