javascript - 什么时候需要在 javascript 函数中传递对象作为参数?

标签 javascript function object

如果我不想使用'this'作为对象并直接编写函数而不将'this'作为对象传递并直接在函数中编写this.src=""为什么这不起作用?

<body>
<script type="text/javascript">
  function picture(yolo){
    yolo.src="3Nail.jpg";
  }

  function normal(yolo) {
    yolo.src="4Nail.jpg";
  }
</script>

 <img onmouseover="picture(this)" onmouseout="normal(this)" src="1nail.jpg" alt="n1"/>
<img onmouseover="picture(this)" onmouseout="normal(this)" src="2nail.jpg" alt="n2"/>

最佳答案

由于这些函数不与事件处理程序关联,因此它们的 this 引用全局窗口对象。为了避免必须使用变量 yolo 作为参数,您可以通过使用 call 以 this 作为上下文来调用函数,从而为函数提供 this 绑定(bind),如下所示.

js

  function picture(){
    this.src="3Nail.jpg";
  }

  function normal() {
    this.src="4Nail.jpg";
  }

html

<img onmouseover="picture.call(this)" onmouseout="normal.call(this)" src="1nail.jpg" alt="n1"/>
<img onmouseover="picture.call(this)" onmouseout="normal.call(this)" src="2nail.jpg" alt="n2"/>

关于javascript - 什么时候需要在 javascript 函数中传递对象作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705616/

相关文章:

javascript - localStorage 一切,包括在 jQuery 的 div 容器内动态创建的图像

javascript - 编辑 "tweet this"按钮以仅发布页面标题的一部分

Javascript:如何从方法内的函数获取值

python : putting functions into classes

javascript - 使用 TypeScript 扩展 Object.prototype

javascript - 阻止浏览器获取 HTML 语法中的 AngularJS 属性

javascript - 获取 jQuery 下拉插件的选定值

function - 将函数添加到 Matlab 路径

javascript - 将鼠标事件绑定(bind)到 JavaScript 对象

c# - 如何在 C# 中将对象数组向上转换为另一种类型的对象数组?