Разница между ссылкой и экземпляром в javascript

Иногда я слышу, как люди говорят "ссылка на объект", а некоторые говорят "экземпляр объекта", В чем разница?

Ответ 1

Переменная будет содержать ссылку на экземпляр объекта.

Фактический объект - это экземпляр.

Переменная/переменные, используемые для доступа к объекту, содержат ссылки на него.

Ответ 2

Экземпляр объекта (или, возможно, более точно сформулированный при разговоре о языках с понятием класса) - это объект, который был создан и существует в памяти. Например, при написании

var obj = new Foo();

Затем был создан новый экземпляр объекта (с new Foo).

Ссылка на объект - это своего рода дескриптор, который позволяет нам получить доступ к экземпляру. Например, на многих языках (включая JavaScript) obj теперь содержится ссылка на только что созданный экземпляр.

В одном экземпляре может быть много ссылок, как в

var obj2 = obj;

где теперь оба obj и obj2 содержат ссылки на один и тот же объект.

Ответ 3

В одном экземпляре может быть много ссылок. Это как, гм, много путей, ведущих к тому же месту.

var x="string object";
var y=x;

Оба x и y являются двумя разными (но равными) ссылками на один и тот же экземпляр объекта.

Ответ 4

В javascript переменная является ссылкой на фактический экземпляр

    // create a new object from the Object constructor
    // and assign a reference to it called `firstObjRef`
    var firstObjectRef = new Object();

    // Give the object the property `prop`
    firstObjRef.prop = "im a property created through `firstObjRef`";


    // Create a second reference (called `secondObjRef`) to the same object
    var secondObjRef = firstObjRef;
    // this creates a reference to firstObjRef,
    // which in turn references the object

    secondObjRef.otherProp = "im a property created through `secondObjRef`";


    // We can access both properties from both references
    // This means `firstObjRef` & `secondObjRef` are the same object
    // not just copies

    firstObjRef.otherProp === secondObjRef.otherProp;
    // Returns true

Это также будет работать, если вы передадите переменную функции:


    function objectChanger (obj, val) {
         // set the referenced object;s property `prop` to the referenced
         // value of `val`
         obj.prop = val;
    }

    // define a empty object outside of `objectChanger` scope
    var globalObject = {};

    globalObject === {}; // true

    // pass olobalObject to the function objectChanger
    objectChanger(globalObject, "Im a string");

    globalObject === {}; // false
    globalObject.prop === "Im a string"; // true

Ответ 5

Мы всегда используем ссылку на объект и не можем напрямую использовать объект, мы можем использовать ссылку. Сам экземпляр объекта находится в памяти.

Когда мы создаем объект, мы получаем ссылку. Мы можем создать дополнительные ссылки:

var obj = {}; // a reference to a new object
var a = obj; // another reference to the object

Ответ 6

Объект - это занятая память для класса. Ссылка указывает на эту память, и у нее есть имя (u можно назвать ее переменной). Например, A a = новый A(); здесь, когда мы пишем "новый A();" некоторая память будет занята в системе. "a" - это ссылка (переменная), которая указывает на эту память и используется для доступа к данным, присутствующим в этой памяти.

Объект получается, когда он имеет жизнь, означает, что он занял некоторую память. Ссылка указывает на объект. Экземпляр - это копия ссылки, которая указывает на объект в определенный момент времени.

Refrence - это переменная, которая указывает объекты. Объект - это экземпляр класса с некоторой памятью, а экземпляр - это переменная и методы, которые имеют объект.

Ссылка означает адрес объекта или переменной. Объект - это экземпляр класса и экземпляр, представляющий объект класса i.e

Экземпляр - это фактический объект, созданный во время выполнения.

Ответ 7

Var a="myObject";
var b=a;

Здесь переменная a - это Instance, а переменная b - это Ссылка