javascript为什么可以动态添加属性

javascript为什么可以动态添加属性,第1张

//---------

如此,所谓js对象,是一个关联数组,关联数组是一个数据结构体,这不单在js上有,在其他编程语言也有,所以这是一个数据结构的定义问题,不是js本身的问题

为什么说js对象是一个关联数据,看下面注释,效果一样

var data ={}

data.date = new Date() //data["data"]=new Date() 添加关联数组的一个元素并赋值

date.obj = {} //date["obj"]={}

甚至对所谓有序数组, var arr=["a","b","c"],可以这样访问,

arr["0"] //a

arr["1"] //b

arr["2"] //c

甚至空字符串也可以作为关联数组的键

vat obj={}

obj[""]="空字符串做键名"

这种情况下,用圆点符无法访问到“属性名“为空字符串的属性

简言之,用关联数组方式可以访问到一切定义的属性,用圆点符却不能,这也证明了js对象的本质是关联数组

简单的补个例子上,希望楼主能把addMethods的第二个参数大致有几种情况写清楚。

我再把我的答案补充完整

//判断类型的方法

var isType = function(object) {

  return Object.prototype.toString.call(object)

    .match(/^\[object\s(.*)\]$/)[1]

}

var addMethods = function(obj, arr){

    if(isType(obj) !== 'Object'){

        return alert('第一个参数必须是对象!')

    }

    //TODO

}

添加属性用setAttribute()方法,可以传入两个参数,第一个是属性名称,第二个是要设置的属性值

var li = document.getElementsByTagName('li')[0]

//设置 li 属性,如 data-falg,设置为true

li.setAttribute("data-falg", "true")

也可以获取属性用getAttribute(),传入一个参数,是想获取的属性名称,返回的是该属性的值


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11523877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存