假设我们有以下对象:
var obj = {
fn1: function() {
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么能动态添加其他成员呢
fn2: function() {}
Run Code Online (Sandbox Code Playgroud)
Phr*_*ogz 49
正如其他人指出的那样:
obj.fn2 = function(){ ... };
Run Code Online (Sandbox Code Playgroud)
请注意,如果"fn2"不是有效标识符,则必须使用对象的"数组"表示法:
obj["fn2"] = function(){ ... };
obj["!! crazy-names#allowed?!"] = function(){ ... };
Run Code Online (Sandbox Code Playgroud)
如果您将属性的名称存储在变量中,也可以这样做:
var propName = "fn2";
obj[propName] = function(){ ... };
Run Code Online (Sandbox Code Playgroud)
如果要测试对象是否存在属性,可以使用in运算符:
if ("fn2" in obj){ ... }
Run Code Online (Sandbox Code Playgroud)
如果要从对象中删除属性,请使用以下delete关键字:
var o = { a:42 };
console.log( "a" in o ); // true
delete o.a; // Or delete o["a"]
console.log( "a" in o ); // false
Run Code Online (Sandbox Code Playgroud)
要迭代对象中的所有属性,请in在for循环中使用运算符.确保var变量不是全局变量:
var o = { a:42, b:17 };
var allPropertyNames = [];
var allPropertyValues = [];
for (var propName in o){
// If you don't do this test, propName might be a property inherited
// by this object, and not a property on the object itself.
if (o.hasOwnProperty(propName)){
allPropertyNames.push(propName);
allPropertyValues.push(o[propName]);
}
}
console.log( allPropertyNames ); // [ "a", "z" ]
console.log( allPropertyValues ); // [ 42, 17 ]
Run Code Online (Sandbox Code Playgroud)
尝试以下
var obj = {
fn1: function() {
}
}
obj.fn2 = function() {} // this will add another member to existing object
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助.
谢谢!
侯赛因.
| 归档时间: |
|
| 查看次数: |
40603 次 |
| 最近记录: |