gpt4 book ai didi

javascript - JavaScript 中的装饰器对象

转载 作者:行者123 更新时间:2023-11-28 05:14:08 25 4
gpt4 key购买 nike

谁能解释一下 getDecorator 和tree.BlueBalls 函数有效吗?这些函数如何修改树对象?

var tree = {};
tree.decorate = function() {
alert('Make sure the tree won\'t fall');
};

tree.getDecorator = function(deco){
tree[deco].prototype = this;
return new tree[deco];

};

tree.BlueBalls = function() {
this.decorate = function() {
this.BlueBalls.prototype.decorate();
alert('Add blue balls');
}
};


tree = tree.getDecorator('BlueBalls');
tree.decorate()

最佳答案

装饰器函数创建一个新对象(本质上是树对象的新属性)Blueballs,它以树为原型(prototype)并返回它。

现在,如果您调用新创建的对象,它将首先调用其原型(prototype)的 decorate 函数 (this.BlueBalls.prototype.decorate()),然后调用其自己的 decorate 函数,产生两个警报“确保树不会倒下”和“添加蓝色球”。

对于那些不熟悉设计模式的人:decorator pattern本质上是通过创建“包装器”向现有对象添加行为,因此它不会影响原始对象的行为。

关于javascript - JavaScript 中的装饰器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125760/

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