当前位置: 首页 > 知识库问答 >
问题:

javascript - 问一个JS中apply的问题?

危卜鹰
2023-08-31

image.png

function Person(name,age){    this.name = name;    this.age = age;}var person = new Person("xiaoming",100);var obj = {}Person.apply(obj,['xiaomings',300]);console.log(person)

不是应该为['xiaomings',300]吗?

共有3个答案

孟子墨
2023-08-31

apply 修改构造函数 Person 内部的 this 指向到 obj

阎建德
2023-08-31

你应该console.log(obj), 这样会打印{"name":"xiaomings","age":300},
先通过 new Person("xiaoming", 100) 创建了一个新的 person 对象,该对象是"name":"xiaoming","age":100}, 你后面Person.apply person 对象是没有任何关系的

apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.

Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)

元昊苍
2023-08-31

不是的,Person.apply(obj,['xiaomings',300])中的参数是一个数组,而不是一个包含多个参数的参数列表。所以应该是Person.apply(obj, ['xiaomings', 300])。这样会将数组中的每个元素依次作为参数传递给 Person 构造函数,并在 obj 上调用该构造函数。

 类似资料:
  • 我想匹配一段字符串中所有的input 并使用replace进行替换,如果input里面有类似data-* 这种自定义属性的就跳过 不知道这种正则该怎么写,我也阅读了文档并使用google。都没找到 比如 <input type='text' /> 这种Input就匹配,<input data-xxx /> 带有自定义属性的input 正则则不匹配

  • 定义一个组件: 来调用这个组件的页面: 运行之后点击页面中的文字atts,你会发现alert弹出了一次。按理说不是应该弹出两次才对的吗? 然后我略微的修改下组件: 这次再来点击中的文字atts,你会发现alert弹出了两次。 啥原因啊?

  • 代码如下: 在下拉框选择值后,就赋值arr的数组,然后去匹配列表的processName,在其的长度上相同的去掉, 期望下拉框选择值后,arr的数组只能选择一个,它的length

  • 背景:基于Element UI 开发的项目,使用到了Tree树型控件 需求:页面有一个tree控件(可选择)如图 这个控件在切换月份的时候可能存在二级节点下有新增的节点或者减少的节点, 如果 ‘一级2’被全部中了,那么切换其他月份如果 ‘一级2’节点下有新增的节点也要勾选上。 树的深度不确定(后端返的),数据量大的时候遍历判断会影响性能,求问各位大佬 有什么比较好的办法处理吗 找出两颗树的差异的节

  • 请问这种 space-between 两端对齐的,最后一行 怎样靠左和上面的一样正常显示,而不是最后一个跑到最右边去了, 网上找了很多,加伪类之类的方法都不行,请问如何去做合适?

  • 代码如下: 为什么第一个log打印是 undefined 而不是 1?那个全局的 a 应该在这里生效的才对啊