没有合适的资源?快使用搜索试试~ 我知道了~
前言 不知道用隐式调用来形容是否确切,其行为总是隐藏在背后,时不时出来露脸一下,作用貌似不大,但是了解一下还是有用处的,保不准在你的使用下大有作为。 所谓的隐式调用简单来说就是自动调用一些方法,而这些方法像钩子一样可以在外部修改,从而改变既定行为。 下面我会列举一些最近看到的隐式调用,例子都是点到即止,欢迎补充 数据类型转换 toSting 和 valueOf var obj = { a: 1, toString: function () { console.log('toString') return '2' }, valueOf: functi
资源推荐
资源详情
资源评论
javascript中的隐式调用中的隐式调用
前言前言
不知道用隐式调用来形容是否确切,其行为总是隐藏在背后,时不时出来露脸一下,作用貌似不大,但是了解一下还是有用处
的,保不准在你的使用下大有作为。
所谓的隐式调用简单来说就是自动调用一些方法,而这些方法像钩子一样可以在外部修改,从而改变既定行为。
下面我会列举一些最近看到的隐式调用,例子都是点到即止,欢迎补充
数据类型转换数据类型转换 toSting 和和 valueOf
var obj = {
a: 1,
toString: function () {
console.log('toString')
return '2'
},
valueOf: function () {
console.log('valueOf')
return 3
}
}
console.log(obj == '2'); //依次输出 'valueOf' false
console.log(String(obj));//依次输出 'toString' '2'
var obj = {
a: 1,
toString: function () {
console.log('toString')
return '2'
},
valueOf: function () {
console.log('valueOf')
return {} //修改为对象
}
}
console.log(obj == '2'); //依次输出 'valueOf' 'toString' true
console.log(Number(obj));//依次输出 'valueOf' 'toString' 2
在相等运算符的操作中,对象会先调用 valueOf 如果返回的值是一个对象, 就会调用 toSting, null除外,然后用返回的值进行
比较,第一个例子 相当于 3 == ‘2’ 输出 false, 第二个例子由于执行valueOf 返回的是一个对象, 然后执行 toString, 最后相
当于 ‘2’ == ‘2’ 输出true在 Number 和 String 方法中 Number会先调用 valueOf, 后调用 toString, String方法中是相反的。
数据类型的转换除了上面的两个例子外,还存在在各种其他操作中,如数值运算,当涉及到引用类型时,都会调用valueOf 或
toString 方法,只要是对象都会继承这两个方法,我们可以重新覆盖这两个方法,从而影响数据类型转换的行为
DOM2事件中的事件中的 handleEvent
var eventObj = {
a: 1,
handleEvent: function (e) {
console.log(this, e);//返回 eventObj 和 事件对象
alert(this.a)
}
}
document.addEventListener('click', eventObj)
你没有看错,addEventListener 第二个参数除了函数外还可以是一个对象, 事件触发后会执行对象的handleEvent方法,方法执
行时的this指向eventObj, 你可以把想传入的数据绑定在eventObj对象上
JSON对象对象 toJSON
var Obj = {
a: 10,
toJSON: function () {
return {
a: 1,
b: function () {
},
c: NaN,
d: -Infinity,
e: Infinity,
资源评论
weixin_38536716
- 粉丝: 11
- 资源: 921
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功