Передает ли Javascript по ссылкам или передает значения? Вот пример из Javascript: The Good Parts. Я очень смущен параметром my
для функции прямоугольника. Это фактически undefined
и переопределено внутри функции. Нет оригинальной ссылки. Если я удалю его из параметра функции, функция внутренней области не сможет получить к ней доступ.
Это закрытие? Но функция не возвращается.
var shape = function (config) {
var that = {};
that.name = config.name || "";
that.area = function () {
return 0;
};
return that;
};
var rectangle = function (config, my) {
my = my || {};
my.l = config.length || 1;
my.w = config.width || 1;
var that = shape(config);
that.area = function () {
return my.l * my.w;
};
return that;
};
myShape = shape({
name: "Unhnown"
});
myRec = rectangle({
name: "Rectangle",
length: 4,
width: 6
});
console.log(myShape.name + " area is " + myShape.area() + " " + myRec.name + " area is " + myRec.area());