CNode

求助js的问题(或许是关于命名)

问答
AajaxQWER发布于10 年前最后回复10 年前4 回复4118 浏览0 收藏

上代码: var obj1 = { name:"obj1", getName:function(){ console.log(this.name) } } var obj2 = { name:"obj2" } var name = obj1.getName; typeof(name) //string 这里name的类型是字符串 name //"function(){console.log(this.name)}" name.apply(obj2) //报错 name.apply is not a function 如果把name改成其他的如: var name1 = obj1.getName; name1.apply(obj2) //obj2 请问一下 这个是为什么

查看回复

回复 (4)

A
ajaxQWER#1·10 年前

@zhengjun87 为什么这里的name被认为了对象中的name,typeof(name)//string

Z
zhengjun87#2·10 年前
引用 ajaxQWER@zhengjun87 为什么这里的name被认为了对象中的name,typeof(name)//string

@ajaxQWER apply函数的作用就是将name这个函数上下文绑定到了obj2,而obj2中有name这个属性,所以原先函数name被字符串name替代了,我是这么理解的

D
DevinXian#4·10 年前

这个问题在node环境是不存在的,window比较特殊,一个函数赋值给window.name会变成先toString再赋值

参与回复
登录后即可参与回复。登录