Что такое экземпляр JavaScript? - PullRequest
0 голосов
/ 20 апреля 2019

Что такое экземпляр в JavaScript? Кто-нибудь может привести пример, пожалуйста?

Также, пожалуйста, объясните ваш код.

Ответы [ 3 ]

1 голос
/ 20 апреля 2019

Экземпляр - это просто объект, созданный классом (ES6) или функцией конструктора. Вот пример:

function Person(name) {
  this.name = name;
}

var john = new Person("John Doe");
console.log(john);
//john is an instance of Person - we can see this by using the instanceof operator
console.log(john instanceof Person);

JavaScript создает экземпляры при определении переменных, но они доступны только при использовании typeof, если вы явно не используете конструктор new для создания вашей переменной:

var str = "Foo Bar";
var num = 123;
var bool = true;
var obj = { abc: "def" }
var arr = [true, 1, "s"];

console.log(typeof str);
console.log(typeof num);
console.log(typeof bool);
console.log(typeof obj);
console.log(typeof arr);
console.log(typeof undefined);
console.log(typeof null);

Есть пара трюков с typeof, хотя - typeof [] == "object", потому что массив - это объект с несколькими различными методами. Другая наиболее распространенная проблема - typeof null == "object" из-за несоответствия при создании JavaScript между null и undefined.

Если вы хотите найти конструктор любого значения, используйте constructor.name:

var str = "Foo Bar";
var num = 123;
var bool = true;
var obj = { abc: "def" }
var arr = [true, 1, "s"];

console.log(str.constructor.name);
console.log(num.constructor.name);
console.log(bool.constructor.name);
console.log(obj.constructor.name);
console.log(arr.constructor.name);

Этот прием также работает с вашими собственными конструкторами и классами:

function Person(name) {
  this.name = name;
}

var john = new Person("John Doe");
console.log(john.constructor.name);
0 голосов
/ 20 апреля 2019

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

Например, возьмите следующий класс автомобилей:

function Car(myVin) {
    this.vin = myVin;
}

let myHonda = new Car(“24A6733HJ42983C55”);
let myFord = new Car(“JJ67100473KL93228”);
let momsMinivan = new Car(“JF293HJL679904611”);

Вы только что создали экземпляр класса Car три раза. Каждый экземпляр.

ES2015 (он же ES6) вводит ключевое слово класса и конструкторы:

class Car {
    constructor(myVin) {
        this.vin = myVin;
    }
}

Это становится намного более запутанным.

IMO, если вы действительно хотите изучать ОО-программирование, лучше всего сначала изучить C ++. Там вы увидите классическое наследование в действии, с концепциями конструкторов, частных, защищенных и открытых элементов данных, шаблонами проектирования и другими ключевыми понятиями. Это создаст прочную основу, прежде чем вы погрузитесь в клуг, который является классическим наследием Ecmascript.

Под капотом у Javascript есть прототипическое наследование; Штукатурки Ecmascript классического наследования сверху. Это немного странно и хакерски, и для достижения приватности приходится делать странные вещи с замыканиями.

См. Ссылку ниже для хорошего урока по ООП в C ++.

https://m.youtube.com/watch?v=vz1O9nRyZaY

0 голосов
/ 20 апреля 2019

Когда вы создаете объект!Пример:

//instancing a image
var myImage = new Image(100, 100);
//Append in to body
document.querySelector("body").appendChild(myImage);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...