我似乎遇到了以下代码的一些问题:
var chart = function(d) {
var width = 0; // default width
var height = 0; // default height
function my() {
// generate chart here, using `width` and `height`
console.log("The Input is " + d);
console.log("chart height is " + my.height());
console.log("chart width is " + my.width());
}
my.width = function(value) {
if (!arguments.length) return width;
width = value;
return width;
};
my.height = function(value) {
if (!arguments.length) return height;
height = value;
return height;
};
return my;
}
当我设置var myvar = chart().width(20);
然后再调用myvar.width()
它仍然输出0,而不是像我期望的那样输出20并抛出错误Uncaught TypeError: Cannot read property 'width' of undefined
。我觉得我非常接近解决方案,但我无法弄清楚如何解决这个问题。
我是使用get / set方法的新手,所以任何能让我走上正确道路的东西都会非常感激!
我使用Mike Bostocks以可重复使用的图表为基础。
编辑更新:我希望在my()函数中可以访问输入的宽度和高度。
答案 0 :(得分:1)
您可以返回函数my。
,而不是调用函数my这应该有效
HTTP Status 404
然后
var chart = function(d) {
var width = 0; // default width
var height = 0; // default height
function my() {
// generate chart here, using `width` and `height`
console.log("The Input is " + d);
console.log("chart height is " + my.height());
console.log("chart width is " + my.width());
}
my.width = function(value) {
if (!arguments.length) return width;
width = value;
return width;
};
my.height = function(value) {
if (!arguments.length) return height;
height = value;
return height;
};
return my;
}
这将给你20
答案 1 :(得分:0)
function chart(d) {
var width = 0; // default width
var height = 0; // default height
function my() {
// generate chart here, using `width` and `height`
console.log("The Input is " + d);
console.log("chart height is " + this.height());
console.log("chart width is " + this.width());
}
my.prototype.width = function(value) {
if (!arguments.length) return width;
width = value;
return this;
};
my.prototype.height = function(value) {
if (!arguments.length) return height;
height = value;
return this;
};
return new my();
}
var x = new chart().width(5).height(7); // sets width to 5 and height to 7
x.width() // returns 5
x.height() // returns 7
答案 2 :(得分:0)
我想我找到了一个解决方案,我觉得我的问题有点模糊。
var chart = function(d) {
var width = 0; // default width
var height = 0; // default height
function my() {
// generate chart here, using `width` and `height`
console.log(d);
console.log("width " + width + " height " + height);
}
my.width = function(value) {
if (!arguments.length) return width;
width = value;
return my;
};
my.height = function(value) {
if (!arguments.length) return height;
height = value;
return my;
};
return my;
}
然后在主代码中编写chart("Test")()
来调用内部函数。