Criar um objeto
• Medição direta de objetos
var o = {foo: "bar"}• Função do construtor
var o = new Object ();
• Herança de protótipo
var p = object.create (o);
Herança de classe
Os objetos JavaScript têm suas próprias propriedades e propriedades herdadas.
• Ao consultar o atributo x do objeto O, primeiro procure o atributo x em o. Se não for encontrado, procure o atributo x no protótipo objeto de O até que x ou um objeto cujo protótipo seja nulo seja encontrado.
• Ao atribuir um valor ao atributo x do objeto O, se já houver uma propriedade X em O, altere o valor de x. Se não houver propriedade x em O, crie um atributo x para O e atribua um valor.
• Ou seja, a cadeia de protótipos só funcionará ao consultar.
var o = {x: 1}; função p () {this.y = 2; } P.Prototype = O; var T = novo p (); console.log (t); console.log ('x' em t); // true Console.log (T.HasownProperty ('x')); // falseVocê pode usar ou hasownProperty para determinar se existem propriedades no objeto.
Propriedades do objeto
• Transferência através das propriedades do objeto
Você pode usar para ... para atravessar as propriedades de um objeto
Ao usar para .. em, itera as propriedades na cadeia de protótipos. A ordem de travessia é atravessar com a amplitude de prioridade
Portanto, o uso do HASOWNPROPERTY pode determinar se é o próprio atributo de um objeto.
• Propriedades das propriedades do objeto
Use Object.getownPropertyDescriptor () para obter o descritor para a propriedade específica do objeto
Gravável significa se o atributo de objeto é gravável
Por exemplo
var o = {foo: 'bar'} object.DefineProperty (o, "foo", {writable: false}); o.foo = 'World'; console.log (o.foo); // barra de saída aindaEnumerável significa se o atributo de objeto é enumerável
Por exemplo
O enumerável do comprimento e outros atributos na matriz é falso, então
para (p em matriz) {console.log (p);}Nada de saída
Configurável significa se a configuração e a enumeração das propriedades podem ser modificadas.
Essas propriedades de configuração podem ser definidas usando object.DefineProperties.
Object.DefineProperty (O, "Foo", {Writitable: false});
Obter significa um método para obter propriedades do objeto
O conjunto representa um método para definir propriedades do objeto
Exemplo
var book = {_year: 2004, edição: 1}; object.DefineProperty (Book, "ano", {get: function () {console.log ('obtenha ano'); return this._year;}, set: function (newvalue) {console.log ('set' '); se (newvalue> 2004) - 2004;Método de objeto
ToString converte objetos em cordas. A conversão padrão será algo como [Objeto]; portanto, se você precisar convertê -lo em formato JSON, poderá usar o JSON.Stringify
O Valueof precisa ser usado ao converter objetos em outros tipos. Da mesma forma, não há nada que valha a pena dizer sobre a conversão padrão.
Objeto executável
Você pode criar um objeto executável pelo seguinte método
barra de função (o) {var f = function () {return "hello world!"; } o .__ Proto__ = f .__ Proto__; f .__ proto__ = o; return f;} var o = {x: 5}; var foo = bar (o); console.log (foo ()); console.log (foo.x); console.log (typeof foo); // funçãoPode ser usado como objeto (com uma cadeia de protótipos) ou como uma função de chamá -lo diretamente