因此,我能够numb
通过原型继承意外地访问私有变量 ()。我有一些问题:
自调用匿名函数 (SIAF) 闭包中的这些私有变量不应该在 SIAF 完成执行后已经过期吗?我原以为它会出错,因为
'use strict'
.如果它意味着变量永不过期,作为最佳实践的一部分是否应该避免这种情况?
这是代码:
'use strict';
var GLOBAL = {};
// SELF-INVOKING ANONYMOUS FUNCTION
(function(){
var numb = 110;
var Person = function(first_name, last_name) {
this.name = first_name + ' ' + last_name;
};
Person.prototype.getNumb = function() { return numb; };
GLOBAL.Person = Person;
})();
// ANOTHER SELF-INVOKING ANONYMOUS FUNCTION
(function(){
function Animal(type_of_animal) {
this.type = type_of_animal;
}
Animal.prototype = Object.create(GLOBAL.Person.prototype);
GLOBAL.Animal = Animal;
})();
var dog = new GLOBAL.Animal('dog');
console.log( dog.getNumb() ); // This logs 110 to the console.
这是小提琴:http: //jsfiddle.net/6w2L1y5w/1/