gpt4 book ai didi

javascript - 为什么我的对象没有构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:22:09 25 4
gpt4 key购买 nike

我正在编写一些用于编写 Adob​​e Illustrator 脚本的辅助类。

我的问题始于 Eyelet 对象。当我实例化它时,它在第一个 new Group() 处失败,因为显然 Group 没有构造函数。

这是我的代码的精简版:

/****************** Collection Class **********************/

function Collection() {
this.parent = app.activeDocument;
this.typename = "Collection";
}

Collection.prototype.setName = function(name) {
this.instance.name = name;
};

/****************** Group (extends collection) *****************/

function Group(name, parent) {
this.parent = parent || this.parent;
this.instance = this.parent.groupItems.add();
if(name) {
this.setName(name);
} else {
this.setName("Group");
}
}

Group.prototype = new Collection();

/****************** Shape Class **********************/

function Shape() {
this.parent = app.activeDocument;
this.typename = "Shape";
}

Shape.prototype.setName = function(name) {
this.instance.name = name;
};

Shape.prototype.stroke = function(width, color) {
this.instance.stroked = true;
this.instance.strokeWeight = width;
this.instance.strokeColor = color;
};

/****************** Line (extends Shape) **********************/

function Line(parent, start, end) {

this.instance = parent.pathItems.add();
// [ [startX, startY], [endX, endY] ]
this.instance.setEntirePath([start,end]);

}

Line.prototype = new Shape();

/****************** Eyelet (extends Shape) **********************/

function Eyelet(parent, position) {
this.instance = new Group("Eyelet", parent);
var whiteCross = new Group("White", this.instance);
var blackCross = new Group("Black", this.instance);

var build = function(group, color, width) {
var vertical = new Line( group , [0 , 0] , [0 , 50] );
vertical.setName("vertical");
vertical.stroke(width, color);
var horizontal = new Line( group , [0 , 50] , [50 , 0] );
horizontal.setName("horizontal");
horizontal.stroke(width, color);
};

build(whiteCross.instance, white, (3 * scale) );
build(blackCross.instance, black, (1 * scale) );

this.instance.position = position;

}

Eyelet.prototype = new Shape();

当我写作时

var eyelet = new Eyelet(layer2, [10,10]);

我明白了

Group does not have a constructor

我已经通过 jslint 运行了这段代码,但我不明白为什么它不起作用。任何帮助将不胜感激。

最佳答案

事实证明,这与 Adob​​e Illustrator 相关。我按照 Dan Breslau 的建议将 Group 对象重命名为 MyGroup 并且它按我的预期工作。 Illustrator 似乎有一个导致问题的全局 Group 对象。感谢您的帮助。

关于javascript - 为什么我的对象没有构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4325368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com