Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8226049
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 7, 20262026-06-07T15:37:41+00:00 2026-06-07T15:37:41+00:00

Let’s have the following functionality: function transformMatrix(a, b, c, d, e, f) { this.data

  • 0

Let’s have the following functionality:

function transformMatrix(a, b, c, d, e, f)
{
  this.data = [a, c, e, b, d, f, 0, 0, 1];
}

transformMatrix.prototype.inverse = function()
{
  //..
  this.data = newdata;
  return this.data;
}

and

var m1 = new transformMatrix(1, 0, 0, 1, 10, 20); // translate (10, 20)

Now, when I call

m1.inverse();

variable m1 is changed.

But when I call

var m2 = m1.inverse();

variable m1 is changed and such changed is copied to variable m2. Great!

Is there a way to assign result of inverse to a new variable without change of the original one?

I can do that by:

var m2 = m1;
m2.inverse();

But I would like to know, if there is some other way, without prior assignment, something like

var m2 = {m1}.inverse(); // incorrect syntax

that would not change m1.

Please note that functionality of inverse function should not be changed.

Any help will be appreciated. Thank you…

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-07T15:37:44+00:00Added an answer on June 7, 2026 at 3:37 pm

    You need to create a new object from m1 and call the inverse function on that in order to avoid modifying the original object. Ideally, your transformMatrix constructor would be able to create a new matrix from a matrix that was passed to it. A constructor to do that would look something like this:

    function transformMatrix(a, b, c, d, e, f) {
        if(!(a instanceof transformMatrix)) { // if a, the first variable passed in, is NOT a matrix
            this.data = [a, c, e, b, d, f, 0, 0, 1];
        } else { // otherwise it is a matrix; we need to create a new matrix from its data
            this.data = [
                a.data[0],
                a.data[1],
                a.data[2],
                a.data[3],
                a.data[4],
                a.data[5],
                0,
                0,
                1,
            ]
        }
    }
    

    Now if you pass in an existing matrix to transformMatrix, it will create a new matrix from the passed in matrix’s data. Modifying the new matrix will not affect the old one. The new syntax would look something like this:

    var m2 = new transformMatrix(m1).reverse(); // note the new keyword, because you're creating a new object
    

    m2 will now be the reversed version of m1, and m1 will not be affected.

    Another option: the JSON hack

    You have another option that is somewhat hacky, but does not require modifying your original transformMatrix constructor: using the JSON hack to duplicate your original matrix and then calling reverse() on the duplicated object. It would look like this:

    var m2 = JSON.parse(JSON.stringify(m1)).reverse();
    

    You could even include this hack in your reverse() function, which would wind up looking like this:

    transformMatrix.prototype.inverse = function() {
        var newMatrix = JSON.parse(JSON.stringify(this));
        //..
        newMatrix.data = newdata;
        return newMatrix.data;
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Let's say I have a string like this: var str = /abcd/efgh/ijkl/xxx-1/xxx-2; How do
I have a string like this: La Torre Eiffel paragonata all’Everest What PHP function
Let's say I have the following object: var VariableName = { firstProperty: 1, secondProperty:
Let's say I have the following function in C#: void ProcessResults() { using (FormProgress
Let's say I have a sortable list like this: $(.song-list).sortable({ handle : '.pos_handle', axis
Let's say on a page I have alot of this repeated: <div class=entry> <h4>Magic:</h4>
Let's say I have a text file composed like this ##### typeofthread1 ##### typeofthread2
Let's say I have the following text: (example) <table> <tr> <td> <span>col1</span> </td> <td>col2</td>
Let's say I have this code: <p dataname=description> Hello this is a description. <a
Let's say I have the following classes : public class MyProductCode { private String

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.