在可重复使用的d3库的源代码中(代码见https://github.com/bugzu/reD3/blob/master/src/area.js),几乎每一行都包含对this
的引用。网站主页:http://bugzu.github.io/reD3/#/
示例:
(function(global) {
global.reD3 = global.reD3 || {};
function Area(element, options) {
this.element = element;
this.options = options;
this.init();
}
Area.prototype = {
init: function() {
var options = this.options,
width = options.width || 960,
height = options.height || 500,
oMargin = options.margin;
var margin = {
top: 20,
right: 30,
bottom: 30,
left: 40
},
margin = reD3.util.mixin(margin, oMargin);
width = this.width = width - margin.left - margin.right;
height = this.height = height - margin.top - margin.bottom;
var xValue = this.xValue = options.xValue || 'date';
var yValue = this.yValue = options.yValue || 'value';
这种频繁使用的目的是什么?对于可重复使用(图表)组件,这样的技术有哪些优点/缺点?
答案 0 :(得分:1)
由于Area是一个类(您可以在构造函数中使用'this'来判断,并且调用它将使用new
关键字),使用this
修改对象而不是本地或全局变量。无论某个库是用于图表还是其他任何东西,使用this
都会鼓励封装,尽管它比其他语言类别更不明显。