[英]How to create properties to and object dynamically based on another object in JavaScript?
我有一個場景,其中需要從source
對象創建一個新的result
對象。
該對象將需要完全具有source
所有屬性,並添加“方法”,並基於屬性命名並基於模板執行代碼(在我的情況下是alert(this.x)
)。
注意:腳本應考慮來自source
任何數量的屬性
我想知道:
從源對象
var source = {
a: 'a',
b: 'b'
};
我需要動態創建結果對象(通過某些功能)
var result = {
a: 'a',
b: 'b',
_setA: function(){
alert(this.a);
},
_setB: function(){
alert(this.a);
}
}
注意:結果是在處理源對象之后創建的
編輯:
根據您的答案的最終解決方案
您可以首先使用$.extend
方法復制屬性,然后需要遍歷屬性並創建動態設置器。 例如下面的代碼:
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>
我不確定我是否完全理解您的問題,但我認為您應該使用這一簡單的方法:
var copy = result
copy.example = {
x: Y,
z, T
}
copy.newFuntion = function(){...} //add your own function
這樣,您擁有的所有結果都會擁有+您自己的東西
您可以執行以下操作:
var result = {
a: 'A',
b: 'B'
};
var copy = result;
Object.keys(result).forEach(function(key) {
Object.defineProperty(copy, "_set" + key, {
get: function() {
return result[key];
}
})
});
copy._seta;
copy._setb;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.