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

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

12 голосов | спросил James Fair 18 J0000006Europe/Moscow 2011, 15:45:09

8 ответов


0

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

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

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

ответил Oded 18 J0000006Europe/Moscow 2011, 15:47:19
0

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

var obj = new Foo();

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

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

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

var obj2 = obj;

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

ответил Jon 18 J0000006Europe/Moscow 2011, 15:51:04
0

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

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

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

ответил genobis 18 J0000006Europe/Moscow 2011, 15:49:16
0

В 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

ответил MattSturgeon 21 J000000Sunday13 2013, 13:39:50
0

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

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

var obj = {}; // a reference to a new object
var a = obj; // another reference to the object
ответил Aliostad 18 J0000006Europe/Moscow 2011, 15:49:24
0

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

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

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

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

.

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

ответил Vikky 18 J0000006Europe/Moscow 2011, 15:50:01
0
Var a="myObject";
var b=a;

Здесь переменная a является экземпляром и переменной b является ссылкой

ответил Balaji Ganesan 23 FebruaryEurope/MoscowbThu, 23 Feb 2017 08:42:54 +0300000000amThu, 23 Feb 2017 08:42:54 +030017 2017, 08:42:54
0

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

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

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

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

ответил Jairo N. Cuadra 17 J0000006Europe/Moscow 2018, 17:15:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132