gpt4 book ai didi

javascript - 如何在 JavaScript 中基于另一个对象动态创建属性和对象?

转载 作者:行者123 更新时间:2023-11-28 00:45:28 24 4
gpt4 key购买 nike

我有一个场景,我需要从 source 对象创建一个新的 result 对象。

该对象需要具有来自的所有属性,并添加“方法”,并根据属性进行命名,并根据模板执行代码(在我的例子中警报(this.x))。

注意:脚本应考虑来自的任意数量的属性

我想知道:

  • 可以用JS实现吗?
  • 合适的技术是什么?
  • 有什么例子吗?

来自源对象

  var source = {
a: 'a',
b: 'b'
};

我需要动态创建结果对象(通过某些函数)

    var result = {
a: 'a',
b: 'b',
_setA: function(){
alert(this.a);
},
_setB: function(){
alert(this.a);
}
}

注意:结果是在处理源对象后创建的

编辑:

基于您的答案的最终解决方案

http://jsfiddle.net/kbnd6e5c/1/

最佳答案

您可以先使用$.extend方法来复制属性,然后您需要迭代属性并创建动态 setter 。例如下面的代码:

var source = { a: 'a', b: 'b' };    
var result = $.extend({}, source);

Object.keys(source).forEach(function(key) {
result['_set' + key[0].toUpperCase() + key.slice(1)] = function(value) {
alert(this.key);
this[key] = value;
}
});

查看下面的工作演示。

var source = { a: 'a', b: 'b', test: 'test' };    
var result = $.extend({}, source);

Object.keys(source).forEach(function(key) {
result['_set' + key[0].toUpperCase() + key.slice(1)] = function(value) {
this[key] = value;
}
});

alert([ result.a, result.test ]);

result._setA('a1');
result._setTest('test1');

alert([ result.a, result.test ]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 如何在 JavaScript 中基于另一个对象动态创建属性和对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461905/

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