web前端|js教程
javascript,this的用法
web前端-js教程
本篇文章给大家带来的内容是关于JS中this指向的几种函数调用方法的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
禁止多点登陆网站源码,Ubuntu重装可视系统,服务器装2个tomcat吗,爬虫判断网站类型,php删除表的关键字是,提供seo服务lzw
初学javascript总会对this指向感到疑惑,想要深入学习javascript,必须先理清楚和this相关的几个概念。javascript中this总是指向一个对象,但具体指向谁是在运行时根据函数执行环境动态绑定的,而并非函数被声明时的环境。除去不常用的with和eval的情况,具体到实际应用中,this指向大致可以分为以下4种。
装修招标网站源码,利用vscode写一个自我介绍,ubuntu使用命令,tomcat新增一个应用,sqlite锁定表,云南简介网页设计,103服务器,discuz 比特币插件,web前端经典框架,python爬虫scrapy框架,自学php视频,seo做,在线 Java 网站,网页粒子背景特效,小米商城模板,消息提醒页面,asp小区物业管理系统,拼团小程序开发模板lzw
作为对象的方法调用
官方网源码模板,vscode文件图标主题,ubuntu实用版本,tomcat9编码,不让爬虫,php 生成文本,海淀seo的优化方案,下载的jsp网站源码怎么用,vip模板解析lzw
当函数作为对象的方法被调用时,this指向该对象:
var person = { name: wy, getName: function() { console.info(this === person); // 输出true console.info(this.name);// 输出twy }}person.getName();
作为普通函数调用
当函数作为普通的函数被调用时,非严格模式下this指向全局对象:
function getName(){ // 非严格模式 console.info(this === window); // 浏览器环境下输出true}getName();
严格模式下this为undefined:
function getName(){ // 严格模式 "use strict" console.info(this === window); // 输出false}getName();
构造器调用
当new一个对象时,构造器里的this指向new出来的这个对象:
function person(){ // 构造函数 this.color = white;}var boy = new person();console.info(boy.color); // 输出white
call或apply调用
用Function.prototype.apply
或Function.prototype.call
可以动态改变传入函数的this指向:
// 声明一个父亲对象,getName方法返回父亲的名字var father = { name: wy, getName: function(){ return this.name; }}// 生命一个儿子对象,但是没有返回名字的功能var child = { name: chy}console.info(father.getName()); // 输出twy// 使用call或apply将father.getName函数里this指向childconsole.info(father.getName.call(child)); // 输出chyconsole.info(father.getName.apply(child)); // 输出chy