Следующие действия не работают, из моего получателя я не вижу _nickname
, определенного в Person класса.Использование Object.DefineProperty и доступ к переменной в закрытом доступе
var Person = function (args) {
var _nickname = '';
if (args === undefined || args === null) {
return;
}
if (args.nickname !== undefined && args.nickname !== null) {
_nickname = args.nickname;
}
}
Object.defineProperty(Person.prototype, "nickname", {
get : function() {
return _nickname;
}
});
var x = new Person({
nickname : 'bob'
});
console.log(x.nickname);
Как это сделать? Есть ли способ добавить _nickname к прототипу Person из его функции?
Быстрый совет: 'args === undefined || args === null' то же, что и 'args == null', потому что' null == undefined'. То же самое с другим сравнением. – elclanrs
Ах, да, я был в курсе о JsLint, и ему не нравится ==. Я исправил это. Я не знаю, слишком ли осторожен, но я надеялся, что закрытие JS позаботится об этом :-) – Matt
JSHint - моя чашка чая. У него есть опция только для этого конкретного случая: [eqnull] (http://www.jshint.com/docs/options/#eqnull) – elclanrs