This JavaScript exception setting getter-only property works in strict-mode only and occurs if the user tries to set a new value to a property for which only a getter is specified.
Message:
TypeError: Assignment to read-only properties is not allowed in strict mode (Edge) TypeError: setting getter-only property "x" (Firefox) TypeError: Cannot set property "prop" of #<Object> which has only a getter (Chrome)
Error Type:
TypeError
Cause of the Error: The user is trying to set a new value to a property for which only a getter is defined.
Example 1: In this example, the getter method is defined for the object. The property can not be accessed directly.
Javascript
"use strict" ; function GFG_Fun() { let temp = null ; Object.defineProperty( this , 'temp' , { get: function () { return temp; } }); } let obj = new GFG_Fun(); obj.temp; obj.temp = 100; // Error here |
Output:
TypeError: Cannot set property temp of #<GFG_Fun> which has only a getter
Example 2: In this example, the getter method is defined for the object ‘Person’. Property ‘Age’can not be accessed directly.
Javascript
"use strict" ; function Person(ageP) { let age = ageP; Object.defineProperty( this , 'age' , { get: function () { return age; } }); } let p = new Person(22); p.age = 30; // TypeError |
Output:
TypeError: Cannot set property age of #<Person> which has only a getter