នៅ​ក្នុង​កម្មវិធី SvelteKit នៅ​ក្នុង​បរិបទ​នៃ​ប្រតិភាព ការដោះដូរតំលៃ​របស់​កំរង​ទិន្នន័យ​ណា​មួយតាម​រយៈ​វិធី push( ), pop( ), shift( ), unshift( ) និង splice( ) នឹង​មិន​ធ្វើ​អោយ​កំរង​នោះ​មាន​ការផ្លាស់​ប្តូរ​ឬ​មាន​លក្ខណៈ​ប្រតិភាព​ឡើយ​។

 

<script>
    let numbers = [1, 2, 3, 4];

    function addNumber() {
        numbers.push(numbers.length + 1);
    }
    
    $: sum = numbers.reduce((total, currentNumber) => total + currentNumber, 0);
</script>

<p>{numbers.join(' + ')} = {sum}</p>

<button on:click={addNumber}>
	Add a number
</button>

 

តំលៃ​របស់​កំរង​ទិន្នន័យ​អាច​ត្រូវ​ផ្លាស់​ប្តូរ​បាន លុះ​ត្រា​ណា​តែ​មាន​ការប្រើប្រាស់​សញ្ញា​ស្មើ​នៅ​ក្នុង​នោះ​។

 

<script>
    let numbers = [1, 2, 3, 4];

    function addNumber() {
        numbers = [...numbers, numbers.length + 1];
	}

    $: sum = numbers.reduce((total, currentNumber) => total + currentNumber, 0);
</script>

<p>{numbers.join(' + ')} = {sum}</p>

<button on:click={addNumber}>
	Add a number
</button>

 

ស្រដៀង​គ្នា​ដែរ ការផ្លាស់​ប្តូតំលៃនៃ​លក្ខណៈ (property) ណា​មួយ​នៅ​ក្នុង​សំណុំ​ទិន្នន័យ​មួយដែល​ស្ថិត​នៅ​ក្នុង​សំណុំ​ទិន្នន័យ​មួយ​ទៀត នឹង​មិន​បង្ក​អោយ​មាន​លក្ខណៈ​ប្រតិភាព​ឡើយ​។

 

<script>
    let obj = {
        foo: { bar: '' }
    }
	
    const foo = obj.foo
	
    function updateFoo() {
        foo.bar = 'baz'
    }
</script>

<h2>
    Hello {obj.foo.bar}
</h2>

<button on:click={updateFoo}>
    Update
</button>

<pre>
    {JSON.stringify(obj)}
</pre>

 

លក្ខណៈ​ប្រតិភាព​អាច​កើត​ឡើង​បាន​ ល្គិក​ណា​មាន​ការប្រើប្រាស់​សញ្ញា​ស្មើ​ដើម្បី​ផ្តល់​តំលៃ​ថ្មី​អោយ​សំណុំ​ទិន្នន័យ​ដើម​។

 

<script>
    let obj = {
        foo: { bar: '' }
    }
	
    const foo = obj.foo
	
    function updateFoo() {
        foo.bar = 'baz'
        obj = obj
    }
</script>

<h2>
    Hello {obj.foo.bar}
</h2>

<button on:click={updateFoo}>
    Update
</button>

<pre>
    {JSON.stringify(obj)}
</pre>