假设您有一个对象文字:
var d = {
x: +'35',
y: '25'
};
还有一个匿名函数:
function (d) {
return d.y0 + d.y;
}
当我试验这段代码时,我得到“未定义”代替 d.y0。但是有很多 d3.js 代码通过将 0 附加到它的键来访问一个值。这个 0 有什么作用?
假设您有一个对象文字:
var d = {
x: +'35',
y: '25'
};
还有一个匿名函数:
function (d) {
return d.y0 + d.y;
}
当我试验这段代码时,我得到“未定义”代替 d.y0。但是有很多 d3.js 代码通过将 0 附加到它的键来访问一个值。这个 0 有什么作用?
在 JavaScript 中,d.y0
除非d
有一个名为 的属性,否则它是未定义的y0
。我对 d3 不熟悉,但如果它使用纯 JavaScript,那么他们可以引用附加 0 的属性的唯一方法是,他们引用属性的对象是否具有具有该名称的属性。
查看链接中的 javascript 源代码,y0 是 d3 中使用的内部名称,用于指代数据集合中第一个点的 y 坐标,例如:
function d3_svg_lineBundle(points, tension) {
var n = points.length - 1;
if (n) {
var x0 = points[0][0],
// Here
y0 = points[0][1],
或者
function d3_svg_lineBasis(points) {
if (points.length < 3) return d3_svg_lineLinear(points);
var i = 1,
n = points.length,
pi = points[0],
x0 = pi[0],
// Here
y0 = pi[1],
将“0”附加到属性名称绝对没有什么特别之处!
代码示例来自这个 js 文件: http://mbostock.github.com/d3/d3.js? 1.29.1