parâmetro:
(1) OBJ
Obrigatório. O nome da variável à qual o objeto é atribuído.
(2) valor
Opcional. Qualquer tipo de dados primitivo JavaScript (número, booleano ou string). Se o valor for um objeto, o objeto retornado não será modificado. Se o valor for nulo, "indefinido" ou "não fornecido", um objeto sem conteúdo será criado.
Métodos de objeto
Quando o objeto é usado como construtor, ele pode aceitar um parâmetro. Se o parâmetro for um objeto, ele retornará diretamente o objeto; Se for um valor do tipo original, ele retornará o objeto Wrapper correspondente ao valor. Usando isso, você pode escrever uma função que determina se uma variável é um objeto.
function isobject (value) {return value === object (value);}Existem duas maneiras de implantar um método em um objeto.
Implantar no próprio objeto
Implantar no object.prototype Object
O método Object.Keys é muito semelhante ao método Object.TetownPropertyNames e geralmente é usado para atravessar as propriedades de um objeto. Seus parâmetros são todos um objeto, e todos retornam uma matriz, e os membros da matriz são todos os nomes de atributos do próprio objeto (em vez de herdados). A diferença entre os dois é que o primeiro retorna apenas atributos enumeráveis, enquanto o último também retorna os nomes de atributos não enumeráveis. Como a matriz possui um comprimento de atributo inenumerável, a matriz é geralmente atravessada com objetos.
O JavaScript não fornece um método para calcular o número de propriedades do objeto, que podem ser obtidas através do objeto.Keys (O) .Length e Object.GetownPropertyNames (O) .Length.
O método Object.ObServe é usado para observar alterações nas propriedades do objeto.
Métodos relacionados à cadeia de protótipos:
Object.Create (): Gere um novo objeto e o protótipo do objeto.
Object.getProTypeOf (): obtém o protótipo objeto do objeto.
Métodos do objeto Objeto Objeto
Object.Prototype.ValueOf (): A função do método ValueOf é retornar o valor de um objeto e, por padrão, o próprio objeto é retornado. O principal objetivo deste método é que esse método será chamado por padrão quando o JavaScript converter automaticamente o tipo.
Object.Prototype.ToString (): A função do método da tostragem é retornar o formulário da string de um objeto. Quando um objeto é usado para adição de string, o método de tostragem é chamado automaticamente.
Usando o método de chamada, você pode chamar o método object.prototype.ToString em qualquer valor para determinar o tipo desse valor. O valor de retorno do método de tostragem de diferentes tipos de dados é o seguinte:
Valor: retornar [número do objeto]
String: Return [String de objeto]
Booleano: retorna [objeto booleano]
indefinido: retornar [objeto indefinido]
NULL: retornar [objeto nulo]
Objeto: retorna "[objeto" + o nome do construtor + "]"
Object.prototype.toString.Call (2) // "[Número do objeto]" Object.Prototype.tostring.call ('') // "[Object String]"Usando esse recurso, você pode escrever uma função de julgamento de tipo mais precisa do que o operador do tipo Of.
var tipo = function (o) {var s = object.prototype.toString.call (o); retornar s.match (// [objeto (.*?)/]/) [1] .tolowerCase ();}; tipo ({}); // "objeto" tipo ([]); // tipo "Array" (5); // "número"Com base na função de tipo acima, você também pode adicionar um método que determina especificamente um certo tipo de dados.
['Null', 'indefinido', 'objeto', 'array', 'string', 'número', 'boolean', 'function', 'regexp', 'elemento', 'nan', 'infinite']. Foreach (function (t) {type ['is' + t] = function (o) {return type (o); };}); tipo.ISObject ({}); // TrueType.isNumber (NAN); // Falsetype.isElement (document.createElement ('div')); // verdadeiroO modelo de atributo do objeto
No JavaScript, cada atributo possui um objeto de atributos correspondente, que salva algumas meta -informações do atributo. Use o método Object.getownProperTyDescriptor para ler o objeto Atributos do atributo P do objeto O. O objeto Atributos contém as seguintes meta informações:
Valor: representa o valor dessa propriedade, que é indefinido por padrão (desde que um dos graváveis e configuráveis seja verdadeiro, ela pode ser alterada).
gravável: indica se o valor dessa propriedade pode ser alterado, o padrão é verdadeiro.
Enumerável: indica se o atributo é enumerável, o padrão é verdadeiro, ou seja, o atributo aparecerá em operações como para ... in e object.keys (). De um modo geral, as propriedades nativas do sistema (ou seja, propriedades não definidas por usuários) não são enumeráveis.
Indica "configurabilidade", padrão para true. Se definido como false, significa que o atributo não pode ser excluído e o objeto atributos não deve ser alterado (exceto o atributo de valor, se gravável for verdadeiro, o valor ainda pode ser alterado), ou seja, o atributo configurável controla a escritura do objeto Atributos.
A função de valor (getter) representando essa propriedade, padrão é indefinida.
A função de armazenamento de valor (setter) representando essa propriedade, padrão para indefinida.
var o = {p: 'a'}; object.getownPropertyDescriptor (o, 'p'); // objeto {// value: "a", // writable: true, // enumerável: true, // configurável: true //}O método Object.DefineProperty permite definir ou modificar um atributo definindo um objeto de atributo e retorna o objeto modificado. O formato é o seguinte:
Object.DefineProperty (Object, PropertyName, AttributesObject)
O método Object.DefineProperty aceita três parâmetros, o primeiro é o objeto em que a propriedade está localizada, o segundo é o nome da propriedade (deve ser uma string) e a terceira é o objeto de descrição da propriedade. Através desse método, os valores padrão das propriedades graváveis, configuráveis e enumeráveis do objeto de propriedade são falsas.
Object.DefineProperty (O, "P", {value: "bar"}); object.GetownPropertyDescriptor (O, 'P'); // Objeto {// Value: "Bar", // Writitable: False, // Enumerable: False, // Configurável: False //}Se várias propriedades forem definidas ou modificadas de uma só vez, você poderá usar o método Object.DefineProperties. Deve-se observar que, uma vez que a função de valor obtenha (ou o conjunto de funções de armazenamento de valor) seja definido, o escritor não pode ser definido como true ou o atributo de valor é definido ao mesmo tempo, caso contrário, um erro será relatado.
var o = Object.defineProperties({}, { p1: {value: 123, enumerable: true}, p2: { value: "abc", enumerable: true}, p3: { get: function () { return this.p1 + this.p2 }, enumerable: true, configurable: true }});Enumerável pode ser usado para definir a propriedade "secreta". Se o enumerável de uma propriedade for falso, o método para ... em loop, o objeto.Keys e o método json.Stringify não obterão a propriedade, mas seu valor pode ser obtido diretamente através de O.xx.
A diferença entre o método para… no loop e o objeto. Se você precisar obter todas as propriedades do próprio objeto, independentemente do valor do enumerável, poderá usar o método ObjectOwnPropertyNames.
A configuração determina se uma variável pode ser excluída. Quando uma variável é declarada usando o comando VAR, a configuração da variável é falsa e quando uma variável é declarada usando o comando var (ou uma variável é declarada usando a atribuição de atributo), a configuração da variável é verdadeira. Isso significa que o exclusão pode excluir apenas as propriedades do objeto.
var a1 = 1; // configurável: Falsesea2 = 1; // configurável: true (equivalente a isso.a2 = 1)
Além da definição direta, as propriedades também podem ser definidas usando funções de acessador. Entre eles, a função de armazenamento de valor é chamada Setter, que usa o comando set; A função de aquisição de valor é chamada getter, que usa o comando get. Usando a função de acesso, a ligação bidirecional entre objetos de dados e objetos DOM pode ser realizada.
Object.DefineProperty (Usuário, 'Nome', {get: function () {retornar document.getElementById ("Foo"). Value}, set: function (newValue) {document.getElementById ("Foo"). Value = newValue;}, Configurável: True});Controle Status do objeto
O JavaScript fornece três métodos para controlar com precisão o estado de leitura e gravação de um objeto e impedir que o objeto seja alterado. A camada mais fraca de proteção é a prevenção, seguida pelo selo, o congelamento mais forte.
O método Object.PreventExtensions pode fazer um objeto não capaz de adicionar novas propriedades, mas pode usar o comando excluir para excluir suas propriedades existentes. O método object.isExtensible pode ser usado para verificar se um objeto pode ser adicionado.
O método object.Seal torna impossível para um objeto adicionar novas propriedades ou excluir propriedades antigas. Object.Seal também define o atributo configurável do objeto atributos dos atributos existentes para false, para que o objeto atributos não possa mais ser alterado. O método objeto.IleSealed é usado para verificar se um objeto usa o método objeto.
O método Object.Freeze pode tornar um objeto incapaz de adicionar novos atributos, excluir atributos antigos e alterar o valor dos atributos, tornando esse objeto realmente uma constante. O método object.isfrozen é usado para verificar se um objeto usa o método objeto.freeze ().
Use os métodos acima para bloquear a escritura do objeto, mas você ainda pode adicionar propriedades a ele alterando o protótipo objeto do objeto.
var o = new object (); object.PreventExtensions (O); var proto = object.getProtypeOf (o); proto.t = "hello"; ot // hello
Uma solução também é congelar o protótipo.
var o = object.Seal (object.create (object.freeze ({x: 1}), {y: {value: 2, worlable: true}})); object.getProTypeOf (o) .t = "hello"; ot // indefinidoPS:
Um objeto é incluído em todos os outros objetos JavaScript; Todos os seus métodos e propriedades estão disponíveis para todos os outros objetos. Os métodos podem ser redefinidos em objetos definidos pelo usuário e chamados por JavaScript no momento apropriado. O método de tostragem é um exemplo de um método de objeto frequentemente redefinido.
Nesta referência de idioma, a descrição de cada método de objeto inclui informações de implementação padrão e específico do objeto para o objeto JavaScript interno.
Em termos de compatibilidade do IE, o documento MSDN da Microsoft é "Objeto foi introduzido no Internet Explorer antes do Internet Explorer 6", então não se preocupe ~