Разница между ссылкой и экземпляром в JavaScript - PullRequest
13 голосов
/ 18 июня 2011

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

Ответы [ 8 ]

13 голосов
/ 18 июня 2011

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

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

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

11 голосов
/ 18 июня 2011

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

var obj = new Foo();

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

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

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

var obj2 = obj;

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

1 голос
/ 21 июля 2013

В 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`'s scope
    var globalObject = {};

    globalObject === {}; // true

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

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

1 голос
/ 18 июня 2011

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

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

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

0 голосов
/ 17 июня 2018

Фактическое определение английского языка для «instance» и «reference».

экземпляр : пример или единичное вхождение чего-либо.

ссылка : действие упоминания.

Таким образом, принимая во внимание эти два определения фактических слов и применяя их к сценарию JavaScript, вы можете понять, как подходит каждая концепция.

0 голосов
/ 23 февраля 2017
Var a="myObject";
var b=a;

Здесь переменная a представляет собой Экземпляр , а переменная b представляет собой Ссылка

0 голосов
/ 18 июня 2011

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

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

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

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

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

0 голосов
/ 18 июня 2011

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

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

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