关于对象中的this指向和修改this指向问题。
this指向:
如果this作为参数传入,那么this就是指向该标签。(在标签内调用时间函数,谁调用指向谁)
< input οninput="fn(this) " >
如果直接在fn函数中写this,那么this为将根据其上下文(即他属于谁)来决定,一般指向window
function (){
console.log(shis);
}
3.点击事件onclick上的this【先获取标签元素】
var ipt = document.querySelector(“input”);
ipt.onclik=function(){
console.log(this);
}
4.构造函数中的this;(this是指当前实例化对象的具体的对象,谁调用this说在的函数,this就指向哪个实例)
5.原型方法上的this。(谁调用就指向谁)
6.对象方法中的this。
(谁调用this所在对象中的函数,就指向谁)
var obj={
name:“ls”;
fn:function(){
console.log(this.name);
}}
obj.fn();这里就是obj调用调用fn()函数,则this指向obj;
修改this指向:
修改this指向有三个方法(call,apply,bind),三个方法的第一个参数都是修改的指向的内容(对象名、对数组名等)。
1.call方法。该方法的后面可以有很多参数,除第一个指向的地方外(调用的就是指向的位置的值内容),后面的参数都是数值数字等类型依次排列(当然,这些参数也可以根据情况省略)。
eg1:
var arr = [12, 56, 48, 25, 35, 64, 964, 554, 221, 20];
var a = Math.max.call(arr, 12, 56, 48, 25, 35, 64, 964, 554, 221, 20);
console.log(a);
eg2:
obj.sex.call(obj1) //后面的参数根据情况,方法里面有参数就写实参。
2.apply方法。该方法后面第二个参数跟一个数组或者数组的变量名。
eg1:
var b = Math.max.apply(arr, arr);
console.log(b);
var c = Math.max.apply(arr, [12, 56, 48, 25, 35, 64, 964, 554, 221, 20]);
console.log(c);
eg2:
:
一样的【当需要参数的时候后面必须跟参数,想eg2没有参数就可以省略】
3.bind方法,改方法返回的是一个函数。可以给一个变量接收,然后调用给入参数(如eg1)。也可以在表达式后面直接加括号给参数(如eg2)。
eg1:
var d = Math.max.bind(arr); //返回的函数
d(12, 56, 48, 25, 35, 64, 964, 554, 221, 20);
console.log(d(12, 56, 48, 25, 35, 64, 964, 554, 221, 20));
eg2:
Math.max.bind(arr)(arr);
实例:
关于对象中的this指向和修改this指向问题。相关推荐
- this 指向以及修改this 指向的方法
[this指向的学习,以及修改this指向的方法] 目录 一.this 指向:谁调用指向谁 1.全局中指向 window 2.普通函数 this 指向最后调用的(函数在声明的时候是没有 this 指向 ...
- python封装:隐藏对象中的属性或方法(三分钟读懂)
封装:隐藏对象中的属性或方法 隐藏对象中的属性 隐藏:- 将对象的属性名,修改为一个外部不知道的名字 我们使用时,有特殊方法来处理获取(修改)对象中的属性 获取(修改)对象中的属性 需要提供一个get ...
- java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思
Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...
- 微信小程序中如何使用setData修改数组或对象中的某一参数
本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这 ...
- JAVAscript中的this指向和this指向的修改
JAVAscript中的this指向和this指向的修改 this 关键字 一般在函数中使用,表示哪个对象执行了当前函数. 每一个函数内部都有一个关键字是 this . 函数内部的 this 只和函数 ...
- 「后端小伙伴来学前端了」Vue中 this.$set的用法 | 可用于修改对象中数组的某一个对象、 可用于更新数据到视图
夜晚有明月,梦里有佳人 前言 最近在写老师布置的vue项目,真的说实话,每天真就是在百度.google.bing等各个搜索引擎之间反复横跳,不然就是掘金搜一搜.思否搜一搜,还有CSDN看一看.我的前端 ...
- android c 对象为空,ndk-jni中C/C++接口函数修改函数参数jobject对象成员值(数组)的有关问题...
ndk-jni中C/C++接口函数修改函数参数jobject对象成员值(数组)的问题 现java中有个类: public class TestClass { private int nValue; p ...
- 微信小程序this.setData修改对象中某个属性的值
前言 做过微信小程序的同学都知道,this.setData() 方法可以修改或者更新 data 中的值 .那不知道大家有没有遇到这么一种情况,我要修改对象中某个属性的值该怎么办呢?是不是第一想到的就是 ...
- 小程序,修改数组或对象中的值,通过input动态修改数组对象中的值
data: {sourceList: [{name: '',link: '',code: '',intactLink: ''}, {name: '',link: '',code: '',intactL ...
- 遍历聚合对象中的元素——迭代器模式(二)
2 迭代器模式概述 在软件开发中,我们经常需要使用聚合对象来存储一系列数据.聚合对象拥有两个职责:一是存储数据:二是遍历数据.从依赖性来看,前者是聚合对象的基本职责:而后者既是可变化的,又是可分离的. ...
最新文章
- 【青少年编程】【Scratch】06 侦测模块
- 在Sun Enterprise Server上配置SCSI磁带机
- css中vertical-align生效
- React学习:组件之间的关系、参数传递-学习笔记
- 应用vb编程_VB编程中的列表框综合应用讲解
- 断网python第三方库安装_Python离线断网情况下安装numpy、pandas和matplotlib等常用第三方包...
- 【maven】Controller层参数如何设置传null
- Android Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x10 in tid 5287 (HeapTaskDaemo
- winform DataGridView 文本居中
- LC.1056. Confusing Number, LC.246. Strobogrammatic Number
- python使用OpenCV批量裁剪图片
- 微信支付证书如何部署在linux,微信支付平台证书更新指引
- Java 白皮书 —— A White Paper
- Paper之EfficientDet: 《Scalable and Efficient Object Detection—可扩展和高效的目标检测》的翻译及其解读—续篇
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)A——完全k叉树
- 苹果双卡双待买哪款合适_2020年买哪款苹果手机好?
- 深度解析〔程序员之所以高薪的真实原因〕,加班、秃顶只是冰山一角而已......
- 徘徊在神与兽间的人们
- mmdetection训练自己的COCO数据集
- Android App无法抓包的解决方案总结