0

似乎我不了解javascript中的一些基础知识,

我有以下代码:

Raphael.fn.group = function() {
    var out = Raphael._engine.group(this);
    this.__set__ && this.__set__.push(out);
    return out;
};
(window.Raphael.svg &&
function(e) {
    e.group = function(svg) {
        //Want this to be called $ function defined in Raphael._engine 
        // as var $=function(..){..}
        // line 3780
        var el = $("g");
        svg.canvas && svg.canvas.appendChild(el);
        var res = new Element(el, svg);
        res.type = "group";
        return res;
    }
})(window.Raphael._engine);
var paper = Raphael("out", 800, 600);
//test with circle;
paper.circle(100, 100, 50);
//test with new method;
paper.group();​

所以我发现 $ near 注释行来自全局范围,而不是来自 Raphael._engine 范围,这里有什么方法可以扩展 _engine,或者我应该修补 raphael 来做这些事情?

http://jsfiddle.net/YV2SR/4/

更简单的 jsfiddle - 完全没有 raphael

4

1 回答 1

0

啊,最后一个编辑。

var $不,如果不更改源代码以以某种方式公开 $ ,就无法在对象构造函数中进行定义。这相当于 JavaScript 的私有属性。

于 2012-08-07T17:02:11.307 回答