parámetro:
(1) OBJ
Requerido. El nombre de la variable a la que se asigna el objeto objeto.
(2) Valor
Opcional. Cualquier tipo de datos primitivo de JavaScript (número, booleano o cadena). Si el valor es un objeto, el objeto devuelto no está modificado. Si el valor es nulo, "indefinido" o "no proporcionado", se crea un objeto sin contenido.
Métodos de objeto de objeto
Cuando el objeto se usa como constructor, puede aceptar un parámetro. Si el parámetro es un objeto, devolverá directamente el objeto; Si es un valor del tipo original, devolverá el objeto Wrapper correspondiente al valor. Usando esto, puede escribir una función que determine si una variable es un objeto.
función isObject (valor) {value de retorno === objeto (valor);}Hay dos formas de implementar un método en un objeto de objeto.
Implementar en el objeto objeto en sí
Implementar en objeto.prototype Object
El método Object.Keys es muy similar al método Object.getOwnPropertynames y generalmente se usa para atravesar las propiedades de un objeto. Sus parámetros son todos un objeto, y todos devuelven una matriz, y los miembros de la matriz son todos nombres de atributos del objeto en sí (en lugar de heredado). La diferencia entre los dos es que el primero devuelve solo los atributos enumerables, mientras que el segundo también devuelve los nombres de atributos no enumerables. Dado que la matriz tiene una longitud de atributo inenumerable, la matriz generalmente se atraviesa con objetos.
JavaScript no proporciona un método para calcular el número de propiedades del objeto, que se pueden obtener a través de Object.Keys (O) .Length and Object.getOwnPropertynames (o) .Length.
El método Object.observe se usa para observar cambios en las propiedades del objeto.
Métodos relacionados con la cadena prototipo:
Object.Create (): genere un nuevo objeto y el prototipo del objeto.
Object.getPrototypeOf (): Obtiene el objeto prototipo del objeto.
Métodos de objeto Objeto de instancia
Objeto.prototype.valueOf (): la función del método ValueOF es devolver el valor de un objeto, y de manera predeterminada, se devuelve el objeto en sí. El objetivo principal de este método es que este método se llamará de forma predeterminada cuando JavaScript convierta automáticamente el tipo.
Object.prototype.ToString (): la función del método ToString es devolver el formulario de cadena de un objeto. Cuando se usa un objeto para la adición de cadenas, se llama automáticamente el método ToString.
Usando el método de llamada, puede llamar al método Object.Prototype.ToString en cualquier valor para determinar el tipo de este valor. El valor de retorno del método ToString de diferentes tipos de datos es el siguiente:
Valor: return [Número de objeto]
Cadena: return [cadena de objeto]
Booleano: devuelve [objeto booleano]
indefinido: return [objeto indefinido]
nulo: return [objeto nulo]
Objeto: Devuelve "[objeto" + el nombre del constructor + "]" "
Objeto.prototype.tostring.call (2) // "[número de objeto]" objeto.prototype.tostring.call ('') // "[String de objeto]"Usando esta función, puede escribir una función de juicio de tipo que sea más precisa que el operador de typeOf.
var type = function (o) {var s = object.prototype.ToString.call (o); return s.match (// [object (.*?)/]/) [1] .tolowerCase ();}; type ({}); // tipo "objeto" ([]); // tipo "Array" (5); // "número"Según la función de tipo anterior, también puede agregar un método que determine específicamente un cierto tipo de datos.
['Nulo', 'indefinido', 'objeto', 'array', 'string', 'número', 'booleano', 'function', 'regexp', 'element', 'nan', 'infinite']. Foreach (function (t) {type ['is' + t] = function (o) {type de retorno (o) === t.tolowercase (); };}); type.isObject ({}); // trueType.isnumber (nan); // falsetype.iselement (document.createElement ('div')); // verdaderoEl modelo de atributo del objeto
En JavaScript, cada atributo tiene un objeto de atributos correspondiente, que guarda cierta meta información del atributo. Use el método Object.getOwnPropertyDescriptor para leer el objeto de atributos del atributo p del objeto O. El objeto Attributes contiene la siguiente meta información:
Valor: representa el valor de esta propiedad, que está indefinido de forma predeterminada (siempre que uno de los escritos y configurables sea verdadero, se puede cambiar).
WRITITY: Indica si el valor de esta propiedad se puede cambiar, el valor predeterminado es verdadero.
Enumerable: indica si el atributo es enumerable, el valor predeterminado es verdadero, es decir, el atributo aparecerá en operaciones como para ... en y object.keys (). En términos generales, las propiedades nativas del sistema (es decir, propiedades no definidas por el usuario) no son enumerables.
Indica "configurabilidad", predeterminada es verdadera. Si se establece en FALSO, significa que el atributo no se puede eliminar, y el objeto Atributos no debe cambiarse (excepto que el atributo de valor, si es verdadero, el valor aún se puede cambiar), es decir, el atributo configurable controla la escritura del objeto de atributos.
La función de valor (Getter) que representa esta propiedad, predeterminada es indefinida.
La función de almacenamiento de valor (setter) que representa esta propiedad, predeterminada a indefinida.
var o = {p: 'a'}; object.getownpropertyDescriptor (o, 'p'); // objeto {// valor: "a", // witable: true, // enumerable: true, // configurable: true //}El método object.defineProperty le permite definir o modificar un atributo definiendo un objeto de atributo y luego devolver el objeto modificado. El formato es el siguiente:
Object.DefineProperty (Object, PropertyName, AttributesObject)
El método Object.DefineProperty acepta tres parámetros, el primero es el objeto donde se encuentra la propiedad, la segunda es el nombre de la propiedad (debe ser una cadena) y el tercero es el objeto Descripción de la propiedad. A través de este método, los valores predeterminados de las propiedades escritas, configurables y enumerables del objeto de propiedad son falsos.
Objeto.defineProperty (o, "p", {valor: "bar"}); object.getownpropertyDescriptor (o, 'p'); // objeto {// valor: "bar", // writing: false, // enumerable: false, // configurable: falso //}Si se definen o modifican múltiples propiedades a la vez, puede usar el método Object.DefineProperties. Cabe señalar que una vez que se define la función de valor (o el conjunto de funciones de almacenamiento de valor), la escritura no se puede establecer en verdadero, o el atributo de valor se define al mismo tiempo, de lo contrario se informará un error.
var o = object.defineProperties ({}, {p1: {value: 123, enumerable: true}, p2: {valor: "ABC", enumerable: true}, p3: {get: function () {return this.p1 + this.p2}, enumerable: true, configurable: true}});Enumerable se puede usar para establecer la propiedad "secreta". Si el enumerable de una propiedad es falso, el para ... en bucle, el método Object.Keys y el método JSON.Stringify no obtendrá la propiedad, pero su valor se puede obtener directamente a través de O.XX.
La diferencia entre el método For ... In Loop y Object.Keys es que el primero incluye las propiedades del objeto heredado del objeto prototipo, mientras que el segundo solo incluye las propiedades del objeto en sí. Si necesita obtener todas las propiedades del objeto en sí, independientemente del valor del enumerable, puede usar el método Object.getOwnPropertynames.
La configurabilidad determina si se puede eliminar una variable. Cuando se declara una variable utilizando el comando VAR, la configuración de la variable es falsa, y cuando se declara una variable utilizando el comando VAR (o una variable se declara utilizando la asignación de atributos), la configurabilidad de la variable es verdadera. Esto significa que Delete solo puede eliminar las propiedades del objeto.
var a1 = 1; // configurable: falsesea2 = 1; // configurable: verdadero (equivalente a esto.a2 = 1)
Además de la definición directa, las propiedades también se pueden definir utilizando funciones de accesorios. Entre ellos, la función de almacenamiento de valor se llama setter, que usa el comando set; La función de adquisición de valor se llama Getter, que usa el comando get. Usando la función de acceso, se puede realizar un enlace bidireccional entre objetos de datos y objetos DOM.
Objeto.defineProperty (usuario, 'name', {get: function () {return document.getElementById ("foo"). Valor}, set: function (newValue) {document.getElementById ("foo"). Valor = newValue;}, configurable: true});Estado del objeto de control
JavaScript proporciona tres métodos para controlar con precisión el estado de lectura y escritura de un objeto y evitar que se cambie el objeto. La capa más débil de protección es la preventecencia, seguida de sello, la congelación más fuerte.
El método Object.PreventExtensions puede hacer que un objeto no pueda agregar nuevas propiedades, pero puede usar el comando Eliminar para eliminar sus propiedades existentes. El método Object.IsExtensible se puede usar para verificar si se puede agregar un objeto.
El método Object.Seal hace imposible que un objeto agregue nuevas propiedades o elimine las propiedades antiguas. Object.Seal también establece el atributo configurable del objeto de atributos de los atributos existentes a FALSO, de modo que el objeto de atributos ya no se puede cambiar. El método Object.issealed se usa para verificar si un objeto usa el método Object.Seal.
El método Object.free puede hacer que un objeto no pueda agregar nuevos atributos, eliminar los atributos antiguos y cambiar el valor de los atributos, lo que hace que este objeto sea realmente una constante. El método Object.IsfRozen se utiliza para verificar si un objeto usa el método Object.Freeze ().
Use los métodos anteriores para bloquear la escritabilidad del objeto, pero aún puede agregarle propiedades cambiando el objeto prototipo del objeto.
var o = new Object (); object.preventExtensions (o); var protoRo = object.getPrototypeOf (o); proto.t = "hola"; ot // hello
Una solución es congelar el prototipo también.
var o = object.seal (object.create (object.freeze ({x: 1}), {y: {valor: 2, writable: true}})); object.getPrototypeOf (o) .t = "hello"; ot // indefinidoPD:
Se incluye un objeto de objeto en todos los demás objetos JavaScript; Todos sus métodos y propiedades están disponibles para todos los demás objetos. Los métodos se pueden redefinir en objetos definidos por el usuario y llamados por JavaScript en el momento apropiado. El método de tostración es un ejemplo de un método de objeto redefinido frecuentemente.
En esta referencia del idioma, la descripción de cada método de objeto incluye información de implementación predeterminada y específica de objeto para el objeto JavaScript interno.
En términos de compatibilidad de IE, el documento MSDN de Microsoft es "El objeto se ha introducido en Internet Explorer antes de Internet Explorer 6", así que no se preocupe ~