Вместо того, чтобы полное имя поля, объявить его как метод -
var xyz = {
name: 'ahsan',
fname: 'ashfaq',
// Declare a method to return the full name
fullname : function() {
return this.name + this.fname;
}
};
, а затем -
xyz.fullname();
даст вам полное имя.
Live Demo.
Вы не можете получить доступ к свойствам объекта в том же блоке, который его определяет. В вашем примере JavaScript будет искать определенный объект с именем xyz
. Поскольку объект недоступен на данный момент, вы получите только undefined
.
Сценарий изменяется при доступе к свойствам метода. Здесь вы можете использовать this
для обращения к текущему объекту, который является xyz
. Поэтому, когда вы вызываете этот метод, this
будет ссылаться на xyz
, и в этот момент его свойства будут определены.
Если вы не заботитесь о старых IE, вы может использовать 'Object.defineProperty (xyz," fullname ", {get: function() {return this.name + this.fname;}})' https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty –