What is the reason behind the functionality of this specific JavaScript code?

var my_object = Object.create({}, {
    getBar: {
        value: function() {
            return this.bar;
        }
    }
});
my_object.bar = 1;

alert(my_object.getBar());

What is the reason for getBar being the function and not value?

Answer №1

Given the usage of Object.create requiring property descriptors as input :

propertiesObject

When specified and not set to undefined, it is an object containing enumerable own properties that define property descriptors for additions to the newly-created object, along with corresponding property names.

The definition of value:

value
The value associated with the property. (applies only to data descriptors). Defaults to undefined.

The need for using getFoo suggests opting for an accessor property:

let my_obj = Object.create({}, {
    foo: {
        get: function(){ 
            return this._foo; },
        set: function(newValue){ 
            this._foo = newValue; 
        }
    }
});

Answer №2

It seems that the issue arises from assigning a function to a variable.

If you intend to execute the function anonymously, remember to include parentheses after the declaration like this:

x = { y : function(){return 2;}}

x.y
function (){return 2;}

x = {y : function(){return 2;}()}

x.y
2 

Make sure to add () at the end of the function declaration as shown above.

Apologies for the concise explanation; I just copied it directly from a JavaScript console.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Retrieving data from the state in a React Component

As I am still learning about reactjs, I have come across the difference between React.createclass and React.component. In React.createclass, you can easily access an input value or any state value using code like this: change: function(e) { this.set ...

The function _path2.default.basename does not work when using convertapi within an Angular framework

I'm currently working on integrating the convertapi into my Angular 11 application by referencing the following documentation https://www.npmjs.com/package/convertapi My goal is to convert PDFs into images, However, I encountered an issue when tryi ...

Utilize the combination of a While Loop and setTimeout for optimal

I'm currently working on developing a text-based space RPG game. One of the challenges I'm facing is creating a battle system where the player and AI take turns firing at each other. I've been struggling to implement a while loop in a way th ...

"Troubleshooting: My Three.js scene is displaying blank, what could

I recently created a simple example using Three.js, but my code was not organized into classes which caused some issues with displaying anything in the view. Here is an example of the code I used: HTML file <!DOCTYPE html> <html> <head> ...

transferring an item through ng-repeat

<td ng-repeat="data in data_legend" rowspan="2"></td> Within this code snippet, the data_legend variable is a dynamic array that users populate through a Form. The goal here is to showcase all the dynamic content to the user and determine whic ...

Establishing global date restrictions for the DatePicker component in Angular 8 using TypeScript across the entire application

I am currently learning Angular 8 and I am looking to globally set the minimum and maximum dates for a datepicker in my application. I would like to accomplish this by using format-datepicker.ts. Any suggestions on how I can achieve this? Min date: Jan 1, ...

Is it possible to encounter an invalid character when trying to parse valid JSON using

I have an object with properties that contain JSON strings. When I serialize this object, I get the following string: [{ "template": 1, "action_json": "{\"id\":\"1\",\"action\":\"An action for all of IT!\",& ...

Retrieving information from an API and showcasing the resulting data in a data grid

An issue arose while attempting to retrieve data from an API and passing it to a DataGrid component. Here is an example of the data returned: { data: [{ type: 'PropertyDamage', id: '100', attributes: { ident ...

Is there a way to update the value of an element that is continuously changing through a setInterval() function when hovering the mouse over it?

I am currently a novice working on developing a pomodoro timer. At the moment, when you click the button to start the timer, it switches to displaying the remaining time once activated. One of the features I want to implement is the ability for users to h ...

My webpage layout doesn't quite accommodate my content, so I need to adjust it to be more zoom

Why does the page container load bigger than the html/body container in mobile mode, as shown in the photo? https://i.sstatic.net/fD1N4.png Here is my CSS: html { margin-top: 48px; width: 100%; } body { margin: 0; width: 100%; background: ...

Connect a parent node to a specific subset within Mermaid's graph structure

Managing a complex Mermaid diagram that includes numerous subgraphs can be challenging. The size of the diagram often makes it difficult to maintain the correct order of subgraphs, leading to occasional rearrangements for clarity and positioning. However, ...

Deactivate DropDownList within Update Panel with JQuery

Below is the Update Panel that I am working on: <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="d ...

Next.JS - What is the reason behind data fetching occurring on both the server and client side?

When I call a regular fetch function in the index.js component and then log the response to the console, something unexpected happens. Despite the fetch being inside the component function, the response is also logged on the server side: it shows up in the ...

Make sure to confirm the input length and utilize bootstrap validation for error checking

I have a rather straightforward question. I am currently utilizing Bootstrap 4.6 and am looking to implement form validation for my input field. The requirement is to validate whether the input has a length of 5 characters or less, in which case it should ...

Verifying whether the file is an HTML image file type

My goal is to have a file input field where users can only select images. If an image is selected, the form should submit successfully, but if any other type of file is chosen, I want to display an error message. Here's what I have so far: $(document ...

Transfer an Array of Objects containing images to a POST API using Angular

Looking to send an array of objects (including images) to a POST API using Angular and Express on the backend. Here's the array of objects I have: [{uid: "", image: File, description: "store", price: "800"} {uid: "f ...

Locating the declaration for my TypeScript/React module: Where to find it?

As someone who is completely new to frontend technologies, particularly react and typescript, I encountered an issue while attempting to use a react component from https://github.com/ckeditor/ckeditor5 I came across this example in the documentation: htt ...

How can I make a page scroll to the center when clicking on a carousel?

My goal is to create a webpage where clicking on the carousel will center it on the page. A great example of this functionality can be seen on the Studio New Work website (). As I am still in the process of learning JQuery, I have not yet mastered all the ...

Getting the most out of your single react-select with Yup schema

I'm having issues with the validation of my form using react-select, Formik, and Yup. The schema I'm using is as follows: const Schema = Yup.object().shape({ age: Yup.object().shape({ label: Yup.string().required("Required"), value: Yup. ...

Issues with Response Time in jQuery Reaction Tests

I recently encountered a couple of challenges while working on a reaction test: Firstly, I wanted to incorporate a random pause (2-5 seconds) after the user clicks on a div. Secondly, I aimed to have the divs appear five times in total, providing the ...