buenas,
ese tipo de estructura eventualmente es un objeto. concretamente, un objeto literal. un objeto también se puede crear con los constructores (new Constructor), pero dicho constructor es una función. sus instancias pertenecen a ese constructor. en cambio, un objeto literal siempre es una instancia del constructor Object.
Código:
// constructor ;
function Const(){
this.method = function(){return 'method';};
this.prop = 'prop';
}
var inst = new Const(),
literal = {method: function(){return 'method';},
prop: 'prop'
};
console.log(inst.constructor == Const); // true;
console.log(literal.constructor == Const); // false;
console.log(literal.constructor == Object); // true;
Cita: Por otra partes, porque no me funciona el alert con el valor de la variable dato1 en ese ejemplo?
por dos factores. primero, en realidad no estas creando una variable, sino una propiedad de un objeto. y segundo, la función es un método del objeto. los métodos pueden accesar a las propiedades del objeto al que pertenecen pero es necesario hacer referencia a ellos debido al contexto en que estan declarados. es decir, la función hace referencia al objeto contenedor mediante el keyword
this y a partir de ahí tiene acceso a sus propiedades y demás métodos.