В JavaScript объекты определяются как «коллекция неупорядоченных атрибутов, свойства которых могут содержать основные значения, объекты или функции». С точки зрения непрофессионала, мы можем понимать объекты как наборы пар именных пар, где значения могут быть данными или функциями.
Обычно есть два способа создания пользовательского объекта. Первый - создать экземпляр объекта, а затем добавить в него свойства и методы, например:
var person = new Object (); Person.name = "Скотт"; человек.age = 24; person.sayname = function () {alert (person.name); }Второй метод - буквальный метод объекта. Обычно рекомендуется использовать этот метод для создания объектов, например:
var person = {name: "scott", возраст: 24, sayname: function () {alert (this.name); }}Тип атрибута
Существует два разных свойства, определенные в JavaScript: свойства данных и свойства аксессуаров. Атрибуты данных обычно используются для хранения значений данных, в то время как атрибуты доклада обычно выполняют операции GET/SET и не могут напрямую сохранять значения данных. В ES5 мы определяем атрибуты, чтобы описать различные особенности свойств. В JavaScript мы не можем напрямую получить доступ к этой функции, поэтому мы поместили ее в две пары квадратных скобок, такие как [[перечисляют]].
• Свойства данных
Атрибуты данных в основном описывают их поведение:
1. [[[Настраивается]]: по умолчанию верно. Указывает, можно ли удалить атрибут для переопределения атрибута, можно ли изменить характеристики атрибута, или может ли атрибут быть изменен в атрибут доклада;
2. [[[перечисляется]]: по умолчанию верно. Указывает, может ли атрибут быть возвращен через петлю в форме;
3. Указывает, может ли значение атрибута быть изменено.
4. [[значение]]: значение по умолчанию не определен. Представляет значение данных, содержащее атрибут. Чтение и написание значений атрибутов выполняются с этой позиции.
Для свойств, определенных выше, непосредственно на объекте человека, их свойства [[[настраивается]], [[перечисляют]], и [[записываемые]]] свойства по умолчанию устанавливаются по умолчанию, в то время как свойства [[значение]] устанавливаются на определенное значение. Если вы хотите изменить свойства свойства по умолчанию, вы можете использовать метод Object.DefineProperty (), предоставленный ES5. Этот метод получает три параметра: объект, где находится свойство, название свойства и объект дескриптора. Объект дескриптора может содержать только одну или несколько из вышеуказанных четырех характеристик. Примеры следующие:
var person = {name: "scott"} object.defineproperty (person, "name", {writeble: false;}) console.log (person.name); // "Scott" Person.name = "Evan"; console.log (person.name); // "Скотт"Установите свойство «Записи» атрибута «Имя объекта человека» на false. Значение этого атрибута неизменно, поэтому операция копирования этого атрибута будет проигнорирована напрямую.
var person = {name: "scott"} object.defineproperty (person, "name", {настраивается: false;}) console.log (person.name); // "scott" Delete person.name; console.log (person.name); // "Скотт"Можно видеть, что когда значение свойства, настраиваемое атрибут имени, устанавливается на false, это означает, что атрибут не может быть удален из объекта. Но следует отметить, что, когда свойство определяется как невыполненное, его нельзя превратить в настраиваемое. В настоящее время изменение других функций, отличных от записи, будет вызвать ошибку, например:
var Person = {name: "scott"} object.defineproperty (person, "name", {confinemaven: false;}) objТо есть после изменения настраиваемой функции на False будет ограничения при изменении других функций.
• Свойства доступа
Атрибут доклада не содержит значений данных. Он содержит пару функций Getter и Setter. Когда атрибут доклада считывается, функция Getter вызывается и возвращается допустимое значение; Когда атрибут доклада записан, вызывается функция сеттера, и новое значение передается, и функция сеттера отвечает за обработку данных. Это свойство имеет четыре характеристики:
1. [[[Настраивается]]: по умолчанию верно. Указывает, можно ли удалить атрибут для переопределения атрибута, можно ли изменить характеристики атрибута, или может ли атрибут быть изменен в атрибут доклада;
2. [[[перечисляется]]: по умолчанию верно. Указывает, может ли атрибут быть возвращен через петлю в форме;
3.
4. [[set]]: функция, вызванная при написании атрибутов, по умолчанию не определен.
Свойства доклада нельзя определить напрямую, они должны быть определены через функцию object.defineproperty (), например:
var person = {_name: "Scott", _age: 24, _tel: 86247}; // атрибут имени-только чтение object.defineproperty (человек, "name", {get: function () {return this._name;}}); // возрастный атрибут-это object object.defineproperty (человек, "age", {set: function (p) {this._age = p;}}); // Атрибут TEL является только для чтения object.defineproperty (человек, "tel", {get: function () {return this._tel;}, set: function (p) {this._tel = p;}}); console.log (person.name); // "Scott" Person.name = "Evan"; console.log (person.name); // "Скотт", модификация атрибута имени является недействительной. Anconole.log (person.age); // не определен, нечитаемый атрибут Person.age = 25; console.log (person._age); // 25, console.log (person.tel); // "86247", читаемый атрибут Person.tel = "13975"; console.log (person.tel); // "13975", модификация может быть сделанаПодчеркивание перед атрибутом указывает атрибут, к которому можно получить доступ только через метод объекта. Когда мы используем Person.name, мы на самом деле называем функцию Getter атрибута имени, и когда мы присваиваем значение Person.name, мы называем функцию сеттера атрибута имени, так что взаимосвязь между атрибутом и докладом очень ясна.
Определите несколько атрибутов
Фактически, ES5 предоставляет нам метод определения нескольких свойств для объекта, а именно Object.DefineProperties (). Эта функция получает два параметра, объект, в котором находится свойство, и объект, состоящий из атрибутов, которые необходимо изменить, и его объекты дескриптора. Например, измените приведенный выше пример, чтобы определить несколько свойств одновременно, следующим образом:
var person = {_name: "Scott", _age: 24, _tel: 86247}; Object.defineproperties (человек, {name: {get: function () {return this._name;}}, возраст: {set: function (p) {this._age = p;}}, тел: {get: function () {return this._tel;}, set: function (p) {this._tel = p;}});});Читать свойства
ES5 предоставляет метод object.getOwnPropertyDescripter () для получения дескриптора для данного свойства. Этот метод получает два параметра: объект, в котором находится атрибут, и имя атрибута его дескриптора для чтения. Результат вернет объект. Если это атрибут доступа, возвращаемые объекты включают в себя настройку, перечисляемые, получить и установить; Если это атрибут данных, свойства возвращаемого объекта включают в себя настройку, перечисляемое, записи и значение. Для приведенного выше примера используйте следующее:
var person = {_name: "Scott", _age: 24, _tel: 86247}; Object.defineproperties (человек, {name: {get: function () {return this._name;}}, возраст: {set: function (p) {this._age = p;}}, тел: {get: function () {return this._tel;}, set: function (p) {this._tel = p;}});}); var descriptor = object.getOwnPropertyDescripter (человек, "tel"); console.log (descripter.value); // неопределенная консоль.log (descripTer.Enumerable); // false console.log (typeof descriptioner.get); // "функция"Приведенный выше код получает свойство TEL объекта человека. Поскольку это свойство доклада, его значение не определен, перечисляется ложным, а GET - это указатель на функцию Getter.
В приведенной выше статье кратко обсуждаются атрибуты данных JavaScript, и атрибуты аксессуаров - все, что я поделился с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.