var dataset = { num: 20 };
var svg = { w: 600 };
var column = {
padding: 0.2,
w: (svg.w/dataset.num)/(this.padding + 1),
print: function(){
console.log("through obj methord:" +
(svg.w/dataset.num)/(this.padding + 1)
);}
};
column.print();
console.log(column);
上面的
是代码,可以执行它,结果中您会看到 column.w 的结果是 NAN ,而在obj的方法: print 可以给出正确的答案:25。
怎么可能?即使我将(svg.w / dataset.num)/(this.padding + 1)替换为 svg.w /(dataset.num *(this.padding + 1))< / strong>,它是完全一样的。 在我将其值替换为svg.w,dataset.num之类的变量后,column.w当然变为值25。
答案 0 :(得分:0)
尝试将this.padding
的值更改为0.25。
Javascript不知道您的this
变量的含义。
“ this”变量是每个执行上下文都会获取的变量,在常规函数中,“ this”变量指向浏览器中的全局对象或窗口,这是默认值。在方法调用(它是变量中的函数)中,“ this”变量指向调用对象的方法。在实际定义了该变量的函数之前,不会为“ this”变量分配值。
在代码中使用this
时,它仍然指向对象,您调用了哪个方法。该对象没有padding
属性,这就是为什么您的计算无法执行的原因。
详细了解this
变量here