- 浏览: 1115613 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
javascript之function的this
一、this 的定义 与 函数的调用
在 javascript 中, function 中的 this 指代的是: 调用 function 执行时的上下文。
也就是说,调用哪个对象的 function,this就指代哪个对象。默认是 window 对象。
1. this 可以指代一个普通对象
2. this 可以指代 默认的 window 对象
3. this 可以指代 function 对象的 prototype 对象
4. this 可以指代 function 对象的 一个实例
可以看出:
1) 调用哪个对象的 function , this 就指代哪个对象。
2) 所调用的对象,即:function运行时的上下文。
3) this 与 怎样调用 function 有关。
二、函数运行时,this 的引用
1. this 可以在 function 的 prototype 对象中被引用
三、function 中与 this 相关的两个函数: apply(), call()
前面说了,既然 this 是与调用 function 的对象有关。
那么,当调用对象的 function 时,是否可以指定一个运行时的上下文 this 对象?
1、理解 function 的 apply() 方法。
“The apply() method calls a function with a given this value and arguments provided as an array.”
apply 什么呢? 把当前的对象(只要类型是 object 即可) apply 给 function,作为该 function 的 this 对象。
apply 方法针对的是将要执行的 function 的 this。 它可以在调用函数时,指定一个它的 this 对象。
即:在已经有预设定值的对象上,继续进行this的创建。
1) this 指向执行函数的对象 - 将 function 作为参数
2) this 指向执行函数的对象 - 直接执行函数
3) this 指向执行函数的对象 - 指定一个 this 执行
apply() 方法有两个目地:
1. 指定函数执行时的 this 对象;
2. 运行函数。
(这个目地似乎没有通过从 apply 的方法名称上体现出来,
或许应该叫: apply_and_run 更能体现出这个方法的作用 )
———————————————————————————————————————————————————————————————————————————
扩展阅读:function 中与 this 相关的另一个函数: bind()
The bind() method creates a new function that, when called, has its this keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.
对比 apply() / call():
apply()/ call() 用来调用(执行)函数,而 bind() 用来创建函数。
Syntax
Parameters
thisArg
The value to be passed as the this parameter to the target function when the bound function is called. The value is ignored if the bound function is constructed using the new operator.
arg1, arg2, ...
Arguments to prepend to arguments provided to the bound function when invoking the target function.
参考:
Preserving a reference to “this” in JavaScript prototype functions
http://stackoverflow.com/questions/2025789/preserving-a-reference-to-this-in-javascript-prototype-functions
—————————————
javascript 函数基础系列文章
1、JavaScript之变量的作用域
2、javascript之变量类型与变量声明及函数变量的运行机制
3、javaScript之function定义
4、javascript之function的prototype对象
5、javascript之function的(closure)闭包特性
6、javascript之function的this
7、javascript之function的apply(), call()
___________
javascript 面向对象编程系列文章:
1、javaScript之面向对象编程
2、javascript之面向对象编程之属性继承
3、javascript之面向对象编程之原型继承
-
-
引用请标明
原文出处: http://lixh1986.iteye.com/blog/1960343
-
一、this 的定义 与 函数的调用
在 javascript 中, function 中的 this 指代的是: 调用 function 执行时的上下文。
也就是说,调用哪个对象的 function,this就指代哪个对象。默认是 window 对象。
1. this 可以指代一个普通对象
var Bucky = { pringtFirstName: function(){ console.log("My name is Bucky."); console.log( this === Bucky ); // true } } Bucky.pringtFirstName();
2. this 可以指代 默认的 window 对象
function doSomethingWorthless(){ console.log("I am worthless."); console.log( this === window ); // true } doSomethingWorthless(); // window.doSomethingWorthless();
3. this 可以指代 function 对象的 prototype 对象
var foo = function(){}; foo.prototype.sayHello = function(){ this.name = "Hello,World!"; } foo.prototype.sayHello(); console.log(foo.prototype.name); // "Hello,World!"
4. this 可以指代 function 对象的 一个实例
foo = function(){} foo.prototype.sayHello = function(){ this.name = "Hello World !"; } var f = new foo(); f.sayHello(); console.log(f.name); // "Hello World !";
可以看出:
1) 调用哪个对象的 function , this 就指代哪个对象。
2) 所调用的对象,即:function运行时的上下文。
3) this 与 怎样调用 function 有关。
二、函数运行时,this 的引用
1. this 可以在 function 的 prototype 对象中被引用
foo = function(){ this.name = "Foo function."; } foo.prototype.sayHello = function(){ console.log( this.name ); //"Foo function." } var f = new foo(); f.sayHello(); // sayHello() 运行的上下文环境是 f 对象
三、function 中与 this 相关的两个函数: apply(), call()
前面说了,既然 this 是与调用 function 的对象有关。
那么,当调用对象的 function 时,是否可以指定一个运行时的上下文 this 对象?
1、理解 function 的 apply() 方法。
“The apply() method calls a function with a given this value and arguments provided as an array.”
apply 什么呢? 把当前的对象(只要类型是 object 即可) apply 给 function,作为该 function 的 this 对象。
apply 方法针对的是将要执行的 function 的 this。 它可以在调用函数时,指定一个它的 this 对象。
即:在已经有预设定值的对象上,继续进行this的创建。
1) this 指向执行函数的对象 - 将 function 作为参数
foo = function(){ this.name = "Foo function."; } foo.prototype.sayHello = function(){ var me = this; // this 在这里是 window 对象。 console.log(me.name); // null console.log(this.f.name); //"Foo function." } var f = new foo(); setTimeout(f.sayHello, 1000); // 运行的是 window.setTimeout()
2) this 指向执行函数的对象 - 直接执行函数
foo = function(){ this.name = "Foo function."; } foo.prototype.sayHello = function(){ var me = this; // this 在这里是 f 对象。 console.log(me.name); // "Foo function." console.log(this.f.name); // 报错:f 未定义 } var f = new foo(); f.sayHello(); // 运行的是 f
3) this 指向执行函数的对象 - 指定一个 this 执行
foo = function(){ this.name = "Foo function."; } foo.prototype.sayHello = function(){ var me = this; // this 在这里是 window 对象。 console.log(me.name); // null console.log(this.f.name); //"Foo function." } var f = new foo(); f.sayHello.apply(this, window); // 指定 this 为 window 对象
apply() 方法有两个目地:
1. 指定函数执行时的 this 对象;
2. 运行函数。
(这个目地似乎没有通过从 apply 的方法名称上体现出来,
或许应该叫: apply_and_run 更能体现出这个方法的作用 )
———————————————————————————————————————————————————————————————————————————
扩展阅读:function 中与 this 相关的另一个函数: bind()
The bind() method creates a new function that, when called, has its this keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.
对比 apply() / call():
apply()/ call() 用来调用(执行)函数,而 bind() 用来创建函数。
Syntax
fun.bind(thisArg[, arg1[, arg2[, ...]]])
Parameters
thisArg
The value to be passed as the this parameter to the target function when the bound function is called. The value is ignored if the bound function is constructed using the new operator.
arg1, arg2, ...
Arguments to prepend to arguments provided to the bound function when invoking the target function.
this.x = 9; var module = { x: 81, getX: function() { return this.x; } }; module.getX(); // 81 var retrieveX = module.getX; retrieveX(); // returns 9 - The function gets invoked at the global scope // Create a new function with 'this' bound to module // New programmers might confuse the // global var x with module's property x var boundGetX = retrieveX.bind(module); boundGetX(); // 81
参考:
Preserving a reference to “this” in JavaScript prototype functions
http://stackoverflow.com/questions/2025789/preserving-a-reference-to-this-in-javascript-prototype-functions
—————————————
javascript 函数基础系列文章
1、JavaScript之变量的作用域
2、javascript之变量类型与变量声明及函数变量的运行机制
3、javaScript之function定义
4、javascript之function的prototype对象
5、javascript之function的(closure)闭包特性
6、javascript之function的this
7、javascript之function的apply(), call()
___________
javascript 面向对象编程系列文章:
1、javaScript之面向对象编程
2、javascript之面向对象编程之属性继承
3、javascript之面向对象编程之原型继承
-
-
引用请标明
原文出处: http://lixh1986.iteye.com/blog/1960343
-
发表评论
-
Javascript 测试框架之 隐式声明 之 describe
2019-06-25 15:26 2616为什么使用 javascript 测试框架时,没有显式导入 d ... -
JavaScript之ECMAScript6新特性之_03_箭头函数(Arrow Function)
2018-01-25 13:46 1124一、简介 箭头函数(Arrow Function)是 ES6 ... -
JavaScript之ECMAScript6新特性之_02_线程异步阻塞: Promise, Async / await
2018-01-12 16:51 2330刚出来不久的 ES8 包含了 async 函数,它的出现,终于 ... -
JavaScript之ECMAScript6新特性之_01_开篇
2017-08-17 02:54 607点此查看全部: http://es6-features.org ... -
jQuery Versions - browser support
2017-08-12 04:19 1635jQuery 3.2.1 Support Deskto ... -
基于HTML5实现的中国象棋游戏
2017-06-24 02:24 1695HTML5实现中国象棋游戏 http://www.w2bc.c ... -
JavaScript之跨域请求解决方案
2017-06-07 11:03 3990浏览器处于安全原因,在使用 Ajax 进行请求访问时,不允许跨 ... -
JavaScript之 25 道面试题
2017-04-17 17:05 95925 Essential JavaScript Intervi ... -
JavaScript小应用之分页算法
2017-03-16 12:56 673效果图: function getPagina ... -
jQuery之empty() VS. remove()
2017-03-16 10:32 728jQuery empty() vs remove() Wh ... -
jQuery之 prop() VS. attr()
2017-03-14 16:43 662attr() 用于自定义属性,id ; prop() 用于 ... -
jQuery之mouseover,mouseover,mouseout,mouseleave
2017-03-14 10:20 663Jquery mouseenter() vs mouseove ... -
javascript之JS操作iframe
2017-02-28 14:56 2197JS操作iframe 1. 获得iframe的w ... -
javascript之面向对象编程之原型继承
2017-01-02 15:34 1147前文讲到“属性继承” ... -
HTML5之Cookie,localStorage 与 sessionStorage
2016-12-22 18:35 848详说 Cookie, LocalStorage 与 ... -
jquery之live(), delegate(), on() 方法
2016-11-26 23:48 934通过下面的一个实例理解 jQuery 的 live(), de ... -
javascript之小应用:网页在线聊天
2016-11-08 11:48 4325概览 这款使用 PHP 和 javascript 搭建的 ... -
javascript之编程序题目
2016-11-06 17:30 10571. 判断两个字符串是否:字母相同切长度相同(空格不算)。 ... -
javascript之面向对象编程之属性继承
2016-10-23 21:09 924函数继承可以分为两种:1、继承其 this 属性 2、继承其 ... -
javascript 之 undefined
2016-08-12 11:01 716一、用法 undefined 关键字有两种用法: 1. 如 ...
相关推荐
JavaScript中的`this`关键字是一个非常重要的概念,它与许多其他编程语言中的行为不同,因此常常让开发者感到困惑。本文将详细解析`this`在JavaScript中的工作原理及其绑定规则。 1. `this`并不总是指向函数自身 ...
JavaScript中的`this`关键字是编程过程中经常会遇到的一个关键概念,尤其在面向对象编程中起着至关重要的作用。`this`的值取决于它被调用时的上下文,而不是定义时的位置,这使得它有时会显得有些复杂。在这个深入...
在JavaScript编程语言中,`this`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...
JavaScript中的`this`关键字是一个非常重要的概念,它用于在函数执行时引用当前上下文的对象。在JavaScript中,`this`的绑定遵循四个主要规则:默认绑定、隐式绑定、显式绑定和new绑定。让我们逐一深入理解这些规则...
### 详解Javascript中的`this`指针 在深入探讨`this`指针之前,我们首先应当明确`this`在JavaScript中的基本概念与作用。`this`关键字在JavaScript中扮演了一个非常核心的角色,它是一个特殊的变量,用于引用调用...
JavaScript中的`this`关键字是一个非常重要的概念,它在不同上下文中具有不同的指向,这使得`this`成为JavaScript灵活但有时也复杂的一部分。`this`的动态绑定特性在编写JavaScript代码时需要特别注意,因为它会影响...
在JavaScript中,`this`关键字是一个至关重要的概念,它在不同上下文中有着不同的指向。`this`在JavaScript中并不像其他静态类型语言(如Java或C++)中的指针那样工作,而是根据函数调用的方式动态确定其值。以下是...
JavaScript中的`this`关键字是程序设计中的一个核心概念,它在不同上下文环境中有着不同的指向,这使得理解和掌握`this`的用法至关重要。在JavaScript中,`this`的值取决于函数调用的方式,而不是定义的方式,这为...
在JavaScript中,`this`关键字的使用十分常见,但也是最容易引起混淆的部分之一。正确理解`this`的工作原理对于编写高效、可靠的代码至关重要。本文将深入探讨`this`在不同上下文中的行为表现,并通过具体的示例帮助...
在JavaScript编程语言中,"this"关键字是一个至关重要的概念,它用于引用对象的上下文,尤其是在函数调用时。理解this的用法是提升JavaScript技能的关键。本篇将深入探讨JavaScript中的this用法,帮助你更好地掌握这...
在JavaScript中,`this`关键字是一个非常重要的概念,它用于引用函数执行时的上下文对象。`this`的值取决于函数被调用的方式,而不是函数定义的位置。在不同的场景下,`this`的指向会发生变化,这使得它成为...
JavaScript中的`this`绑定规则是理解JavaScript面向对象编程的关键概念之一。`this`关键字在不同情况下会有不同的指向,主要取决于函数的调用方式。这里我们将深入探讨四种主要的`this`绑定规则:默认绑定、隐式绑定...
JavaScript中的`this`绑定是一个关键概念,涉及到函数调用、对象方法、构造函数等多个场景。`this`在JavaScript中并不像其他语言中的`this`那样简单地指向对象本身,而是根据函数调用的方式动态确定其指向。理解`...
JavaScript 中的 function 使用方法 JavaScript 中的 function 使用方法可以分为两种:作为普通逻辑代码容器和作为对象。 一、function 作为普通函数 在 JavaScript 中,function 可以作为普通函数使用,类似于 C...
### JavaScript 运行机制之 `this` 详细介绍 在 JavaScript 中,`this` 是一个非常重要的关键字,它在不同的上下文中会有不同的含义。理解和掌握 `this` 的使用对于编写健壮且优雅的代码至关重要。与 Java、C# 等...
Javascript 中 this 指向 在Javascript中,this 指向是一个非常重要的概念,它的指向规律影响着函数的执行结果。理解 this 的指向是开发任务的必备技能。 首先,我们需要区分清楚作用域链和this是两套不同的系统,...
在JavaScript中,`this`对象是一个至关重要的概念,它在不同上下文中扮演着不同的角色,帮助开发者实现面向对象的编程。`this`的值取决于函数调用的方式,而不是函数的定义位置。以下是对`this`对象的详细解释: 1....
JavaScript中的`this`指向问题是一个常见且重要的概念,对于理解和编写高效、无错误的JavaScript代码至关重要。`this`关键字在JavaScript中表示当前上下文的对象,它的指向不是固定的,而是根据函数调用方式的不同而...
箭头函数是 ES6 引入的新特性之一,在箭头函数中,`this` 的值不是由函数调用的方式决定的,而是继承自定义箭头函数时所在的作用域: ```javascript var obj = { test: function() { var arrowFunc = () => { ...
在JavaScript中,`this`可以指向以下四种情况之一: - **全局或函数外部**:在全局作用域中,`this`指向`window`对象(在浏览器环境中)或全局对象(在Node.js中)。 - **对象方法**:当函数作为对象的一个方法被...