Indesign JS如何创建带独立属性的类/蓝图对象并实例化?
在InDesign JS中创建可实例化的类对象
完全可以,InDesign的JavaScript引擎支持ES5及以上语法,你可以通过ES6类或者构造函数实现带有独立内部值的蓝图对象,每个实例都会拥有专属的属性副本。
方法一:ES6类写法(推荐)
语法清晰直观,是现代JS的标准写法:
// 定义包含属性和方法的类 class DesignItem { // 构造函数:初始化实例的color和name属性 constructor(color, name) { this.color = color; this.name = name; } // 定义返回"hello"的方法 getGreeting() { return "hello"; } }
实例化并使用
// 创建第一个独立实例 const item1 = new DesignItem("#ff0000", "红色元素"); // 创建第二个独立实例 const item2 = new DesignItem("#0000ff", "蓝色元素"); // 验证实例的独立属性 console.log(item1.color); // 输出 "#ff0000" console.log(item2.name); // 输出 "蓝色元素" // 调用实例方法 console.log(item1.getGreeting()); // 输出 "hello" console.log(item2.getGreeting()); // 输出 "hello"
方法二:兼容旧版本的构造函数写法
如果你的InDesign版本对ES6支持有限,可采用传统构造函数+原型链的方式:
// 构造函数作为蓝图模板 function DesignItem(color, name) { this.color = color; this.name = name; } // 将方法挂载到原型上,所有实例共享方法(节省内存) DesignItem.prototype.getGreeting = function() { return "hello"; }; // 实例化方式与ES6一致 const item3 = new DesignItem("#00ff00", "绿色元素"); console.log(item3.color); // 输出 "#00ff00" console.log(item3.getGreeting()); // 输出 "hello"
所有实例的color和name属性都是独立存储的,修改某一个实例的属性不会影响其他实例。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

