DOM元素属性值如果设置为对象

点击上方蓝色字体【学习web前端】可【快速关注

640?wx_fmt=jpeg

【讲座】大咖说-前端大型免费公开讲座

【福利】2018自学者的web前端系统学习福利

【教程】精品教程在这里


内部会调用toString方法,将设置的对象转换为字符串添加给相应的属性;

这个问题呢,是通过jQuery的each方法中,回调函数的this指向问题而来;

我们知道,回调函数中的this如果指向的是基本数据类型,那么系统会自动将这个基本数据类型的值包装为对应的对象类型;

就比如:

640?wx_fmt=jpeg

数组里面存的是string类型的值,然后jq实例调用each方法,打印的this如下图所示:

640?wx_fmt=jpeg

this指向的基本数据类型的值被转换为了String类型;

但是这里说的不是这个问题,而是和这个问题类似,我们在给DOM元素设置属性值的时候,如果设置的是对象呢?

获取页面中的span,然后给两个span分别设置属性‘a’,属性值为两个对象:

640?wx_fmt=jpeg

看看设置后显示的结果:

640?wx_fmt=jpeg

第一个属性值:内部调用toString方法将{a : 'a',b : 'b'}对象转换为字符串设置;

第二个属性值:同理,也是调用toString方法将String对象的实例转换为字符串设置;

那么,我们在回到jQuery中,

如果用each方法给DOM添加属性值;

jQuery中的each方法的回调函数中的this,如果指向的是字符串类型的数据,那么在回调函数中操作this给元素添加属性值,是没有问题的,因为this即使被转换为了相应的对象类型数据,那么再给DOM元素添加的时候,内部会调用toString方法在对象类型的数据转换为字符串添加,就相当于‘又折腾回来了’;

那么,如果this指向的不是字符串类型数据,那么就操作参数吧~

声明 | 文章著作权归作者所有,如有侵权,请联系小编删除


猜你喜欢的文章

老司机程序员用到的各种网站整理

► 程序员2万工资很高?金融从业者工资曝光,网友感慨程序员被秒杀

► 程序员那些牛逼闪闪的禁术,看到第二条我就忍不住哈哈哈哈哈哈哈哈

► 【代码收藏】爬取妹子签名和日志并邮件发送

► 浅谈canvas绘画王者荣耀-雷达图

640?wx_fmt=gif 640?wx_fmt=jpeg


猜你喜欢

转载自blog.csdn.net/bg70pvnybv1/article/details/80879033