13af6ab5fSopenharmony_ci#  Reassigning object methods is not supported
23af6ab5fSopenharmony_ci
33af6ab5fSopenharmony_ciRule ``arkts-no-method-reassignment``
43af6ab5fSopenharmony_ci
53af6ab5fSopenharmony_ci**Severity: error**
63af6ab5fSopenharmony_ci
73af6ab5fSopenharmony_ciArkTS does not support re-assigning a method for objects. In the statically
83af6ab5fSopenharmony_citypes languages, the layout of objects is fixed and all instances of the same
93af6ab5fSopenharmony_ciobject must share the same code of each method.
103af6ab5fSopenharmony_ci
113af6ab5fSopenharmony_ciIf you need to add specific behavior for certain objects, you can create
123af6ab5fSopenharmony_ciseparate wrapper functions or use inheritance.
133af6ab5fSopenharmony_ci
143af6ab5fSopenharmony_ci
153af6ab5fSopenharmony_ci## TypeScript
163af6ab5fSopenharmony_ci
173af6ab5fSopenharmony_ci
183af6ab5fSopenharmony_ci```
193af6ab5fSopenharmony_ci
203af6ab5fSopenharmony_ci    class C {
213af6ab5fSopenharmony_ci        foo() {
223af6ab5fSopenharmony_ci            console.log("foo")
233af6ab5fSopenharmony_ci        }
243af6ab5fSopenharmony_ci    }
253af6ab5fSopenharmony_ci
263af6ab5fSopenharmony_ci    function bar() {
273af6ab5fSopenharmony_ci        console.log("bar")
283af6ab5fSopenharmony_ci    }
293af6ab5fSopenharmony_ci
303af6ab5fSopenharmony_ci    let c1 = new C()
313af6ab5fSopenharmony_ci    let c2 = new C()
323af6ab5fSopenharmony_ci    c2.foo = bar
333af6ab5fSopenharmony_ci
343af6ab5fSopenharmony_ci    c1.foo() // foo
353af6ab5fSopenharmony_ci    c2.foo() // bar
363af6ab5fSopenharmony_ci
373af6ab5fSopenharmony_ci```
383af6ab5fSopenharmony_ci
393af6ab5fSopenharmony_ci## ArkTS
403af6ab5fSopenharmony_ci
413af6ab5fSopenharmony_ci
423af6ab5fSopenharmony_ci```
433af6ab5fSopenharmony_ci
443af6ab5fSopenharmony_ci    class C {
453af6ab5fSopenharmony_ci        foo() {
463af6ab5fSopenharmony_ci            console.log("foo")
473af6ab5fSopenharmony_ci        }
483af6ab5fSopenharmony_ci    }
493af6ab5fSopenharmony_ci
503af6ab5fSopenharmony_ci    class Derived extends C {
513af6ab5fSopenharmony_ci        foo() {
523af6ab5fSopenharmony_ci            console.log("Extra")
533af6ab5fSopenharmony_ci            super.foo()
543af6ab5fSopenharmony_ci        }
553af6ab5fSopenharmony_ci    }
563af6ab5fSopenharmony_ci
573af6ab5fSopenharmony_ci    function bar() {
583af6ab5fSopenharmony_ci        console.log("bar")
593af6ab5fSopenharmony_ci    }
603af6ab5fSopenharmony_ci
613af6ab5fSopenharmony_ci    let c1 = new C()
623af6ab5fSopenharmony_ci    let c2 = new C()
633af6ab5fSopenharmony_ci    c1.foo() // foo
643af6ab5fSopenharmony_ci    c2.foo() // foo
653af6ab5fSopenharmony_ci
663af6ab5fSopenharmony_ci    let c3 = new Derived()
673af6ab5fSopenharmony_ci    c3.foo() // Extra foo
683af6ab5fSopenharmony_ci
693af6ab5fSopenharmony_ci```
703af6ab5fSopenharmony_ci
713af6ab5fSopenharmony_ci
72