分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

js中this的使用

发布时间:2023-09-06 01:43责任编辑:傅花花关键词:js

this一般指执行当前代码的所有者

一个小李子:

                

<script type="text/javascript"> ?var name = "Kevin Yang"; ?function sayHi(){ ???alert("你好,我的名字叫" + this.name); ?} ?var person = {}; ?person.sayHello = sayHi; ?person.sayHello();script>

sayHi() ??//Kevin Yang
person.sayHello() ?//name is undefined

sayHi()函数中的this此时代表的window或者global ?,window下有name属性
person.sayHello()中的this代指的就是person对象了,person中无name属性


 

本文例句三种指针使用错误情况:

1.dom中的函数事件

<script type="text/javascript"> ?function sayHi(){ ???alert("当前点击的元素是" + this.tagName); ?} ?script><input id="btnTest" type="button" value="点击我" onclick="sayHi()">


会报错,因为行数中的this此时指代的是window而不是dom


2.临时变量导致this丢失

<script type="text/javascript"> ?var Utility = { ???decode:function(str){ ?????return unescape(str); ???}, ???getCookie:function(key){ ?????// ... 省略提取cookie字符串的代码 ?????var value = "i%27m%20a%20cookie"; ?????return this.decode(value); ???} ?}; ?alert(Utility.getCookie("identity"))script>






这种写法是可以的但是一下写法就是错误的
<script type="text/javascript"> ?function showUserIdentity(){ ???// 保存getCookie函数到一个局部变量,因为下面会经常用到 ???var getCookie = Utility.getCookie; ???alert(getCookie("identity")); ?} ?showUserIdentity();script>
getCookie是一个临时变量,getCookie中的指针指代的是window,所以会报错
<script type="text/javascript"> ?function showUserIdentity(){ ???// 保存getCookie函数到一个局部变量,因为下面会经常用到 ???var getCookie = Utility.getCookie;
   alert(getCookie.call(Utility,"identity")); ???//alert(getCookie.apply(Utility,["identity"]));

}
    showUserIdentity();

script>

3.传参时导致指针丢失 ??注意,Javascript里面都是值传递的,没有引用传递的概念
<script type="text/javascript"> ?var person = { ???name:"Kevin Yang", ???sayHi:function(){ ?????alert("你好,我是"+this.name); ???} ?} ?setTimeout(person.sayHi,5000);script>


window.setTimeout中this指向window
 ?var boundFunc = person.sayHi.bind(person,person.sayHi); ?setTimeout(boundFunc,5000);
 

js中this的使用

原文地址:https://www.cnblogs.com/mttcug/p/8473936.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved