Статьи

JavaScript объектно-ориентированного программирования, часть 1

Категории объектов

В JavaScript есть три категории объектов: собственные объекты, хост-объекты и определяемые пользователем объекты.

Нативные объекты — это объекты, предоставляемые JavaScript. Примеры: строка, число, массив, изображение, дата, математика и т. Д.

Хост-объекты — это объекты, предоставляемые JavaScript средой браузера. Примерами этого являются окно, документ, формы и т. Д.

И пользовательские объекты — это те, которые определены вами, программистом.

Фундаментальная концепция в JavaScript состоит в том, что каждый элемент, который может содержать свойства и методы, является объектом, за исключением примитивных типов данных. Мы можем использовать встроенные функции конструктора JavaScript (как и те, которые мы создали) для создания объектов:

var Image1 = new Image(50,100);    
Image1.src = "myDog.gif";

Здесь мы создали новый объект ImageImage()

  • width
  • height
  • src

JavaScript также включает функцию конструктора Object()Object

 var myObj = new Object();

К этому «базовому объекту» мы можем добавить свойства / методы. Каждый объект в JavaScript происходит от собственного Object

Давайте рассмотрим примитивный тип данных String:

 var myString = "This is my string";    
alert(myString); // displays "This is my string"    
alert(typeof myString); // displays "string"

Тем не менее, мы можем даже сделать String объектом, используя функцию конструктора:

 var myString = new String("This is my string");    
alert(myString); // displays "This is my string"    
alert(typeof myString); // displays "object"

Теперь мы создали объект String Мы также можем сделать то же самое с Number и Boolean. Но почему мы хотим? Что ж, как только мы это сделаем, мы можем добавить отличительные свойства и методы к этому объекту. Примитивный тип данных содержит свойства и методы, заложенные в его конструкторе объектов, но сам он не может содержать никаких отличительных свойств / методов. Например, примитивный тип данных String содержит свойство lengthString()substring() Однако объект StringString() Теперь давайте создадим объект Number

 var myNumber = new Number(2);    
myNumber.doubleIt = new Function("return this*2");    
alert(myNumber.doubleIt()); // displays 4    
alert(typeof myNumber); // displays "object"

Итак, мы просто создали новый объект NumberdoubleIt() Обратите внимание, что typeof myNumber Это связано с тем, что объекты могут содержать уникальные свойства и методы. Примитивные типы данных, такие как String, Boolean, Number, Undefined и Null, не могут, и это то, что отличает их.

Кроме того, в приведенном выше примере мы фактически создали еще один объект — объект Function Однако объект Function Когда мы создаем объект, мы сначала вводим ключевое слово new Затем, используя возвращаемое значение (которое мы обычно назначаем переменной), мы можем добавить свойства и методы к этому объекту. Однако, поскольку объект Function Итак, когда мы входим:

 alert(typeof myNumber.doubleIt) // displays "function"

он отображает «функцию», а не «объект», как вы могли ожидать. Function()Function() Последний аргумент, переданный конструктору var myFunc = new Function("parameter1","parameter2",    
 "parameter3"," // function body");

 myFunc("argument1","argument2","argument3");

Теперь мы можем вызвать эту функцию и указать три аргумента:

 Function
Функциональные объекты

JavaScript-объект Function Во-первых, это вызываемый блок кода. И функция всегда является объектом — она ​​всегда обладает способностью содержать уникальные свойства и методы. Создание функции автоматически создает объект function myFuncObj(){}    
myFuncObj.someVariable = "x";    
alert(myFuncObj.someVariable) // displays "x"    

 new

Даже без Function()Function() Обратите внимание, что конструктор newString

Давайте посмотрим на примитивный тип данных var pimitiveString1 = "This is a primitive string";    
var pimitiveString2 = String("This is a primitive string");    
var stringObject = new String("This is a String object");    
   
primitiveString1.prop = "This is a property";    
primitiveString2.prop = "This is a property";    
stringObject.prop = "This is a property";    
   
alert(primitiveString1.prop) // displays "undefined"    
alert(primitiveString2.prop) // displays "undefined"    
alert(stringObject.prop) // displays "This is a property"    
   
alert(typeof primitiveString1); // displays "string"    
alert(typeof primitiveString2); // displays "string"    
alert(typeof stringObject) // displays "object"
new

 String

Здесь вы можете видеть, что без ключевого слова primitiveString1primitiveString2 Вы также можете видеть, что primitiveString1/primitiveString2stringObject Обратите внимание, что typeofvar x = Date();    
alert(typeof x); // displays "string"
var myFuncObj = new Function();    
var myFuncObj = Function();    
var myFuncObj = function(){}    
function myFuncObj(){}
Это даже верно для Date, Image, Option и других объектов. Например:
Function

Независимо от того, как вы создаете функцию (есть множество способов), вы автоматически создадите объект:

 Circle

Здесь мы рассмотрели различные способы создания объекта Function, который способен содержать вызываемый блок кода, а также любые различные свойства или методы.

В итоге

Прежде чем мы продолжим, давайте рассмотрим некоторые ключевые моменты:

  • В JavaScript есть пять примитивных типов данных: Undefined, Null, Boolean, Number и String.
  • В JavaScript все является объектом, кроме примитивных типов данных.
  • Объект представляет собой неупорядоченную коллекцию свойств. Свойства могут представлять примитивные типы данных, объекты или объекты new
  • В JavaScript есть три основные категории объектов: собственные объекты, хост-объекты и пользовательские объекты.
  • Существует много встроенных, собственных объектов, таких как Object, Image, Date, Option и т. Д. Однако мы также можем создавать наши собственные определяемые пользователем объекты, такие как объект this
  • Конструктор объекта / функция конструктора объекта — это функция, которая используется для определения нового объекта. В этой функции мы объявляем начальные свойства / методы нового объекта и обычно присваиваем им предварительно определенное значение.
  • Для создания экземпляра объекта мы используем ключевое слово « myObj.myFunc()
    Мы можем либо использовать встроенные конструкторы JavaScript для создания собственного объекта, либо мы можем создать наши собственные конструкторы для создания пользовательского объекта.
  • Каждый метод объекта имеет переменную yourObj.myFunc() Пример:
    • yourObj.myFunc ()

    В первом примере в myFunc()thismyObj Однако во втором примере в myFunc()thisyourObj

Обратите внимание на часть 2, где мы рассмотрим аргументы, свойство прототипа и конструкторы на следующей неделе в SitePoint …

Если вам понравилось читать этот пост, вы полюбите Learnable ; место, чтобы узнать новые навыки и приемы у мастеров. Участники получают мгновенный доступ ко всем электронным книгам и интерактивным онлайн-курсам SitePoint, таким как JavaScript Programming for the Web .

Перейти на страницу: 1 | 2 | 3 | 4