js中this的四种调用模式
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
//this的四种调用模式(this作用域) //在此声明,this仅仅是一个作用域的关键字,为了区分变量的作用域。(构造器调用模式)
/**
* 方法调用模式
* 当一个函数被保存为对象的一个属性时,我们称它为一个方法,当方法被调用时,this指向该对象
* @type {{value: number, getValue: getValue}}
*/
var obj = {
value : 'getValue() in Object',
getValue : function() {
alert(this.value);
}
};
obj.getValue(); //alert 1
/**
* 函数调用模式
* 当一个函数并非一个对象的属性时,它被当做一个函数来调用,此时的this指向全局变量(window)
* @type {string}
*/
window.value = 'getValue() not in Object';
function getValue() {
alert(this.value);
}
getValue();
/**
* 构造器调用模式
* 结合new前缀调用的函数被称为构造器函数,此时的this指向构造器函数的实例对象
* @param val
*/
function show(val){
this.value = val;
//value = val;
}
show.prototype.getVal = function() {
alert(this.value);
//alert(value); show()方法中省略this,此处省略this可以显示正常结果。原因:变量提升。
};
var func = new show('constructor');
func.getVal();
/**
* apply/call调用模式,对象冒充
*
* @param str
*/
var fun = function(str) {
this.stauts = str;
};
fun.prototype.getStatus = function () {
alert(this.status);
};
var obj = {
status : 'loading'
};
fun.prototype.getStatus.apply(obj); //相当于 fun.prototype.getStatus.apply(obj, null);
</script> </head> <body> </body> </html>
js中this的四种调用模式的更多相关文章
- JS面向对象函数的四种调用模式
函数的四种调用模式 概念 在 js 中,无论是函数, 还是方法, 还是事件, 还是构造器,...这些东西的本质都是函数 函数, 方法, 事件, 构造器,...只是所处的位置不同 这四种模式分别是 函数 ...
- javascript中函数的四种调用模式详解
介绍函数四种调用模式前,我们先来了解一下函数和方法的概念,其实函数和方法本质是一样,就是称呼不一样而已.函数:如果一个函数与任何对象关系,就称该函数为函数.方法:如果一个函数作为一个对象属性存在,我们 ...
- js高级-函数的四种调用模式
1.对象方法调用模式 方法内部的this指向当前调用者的对象d 定义类 (构造函数) function Dog (dogName){ //创建一个空对象 让空对象==this this.name ...
- js中this的四种使用方法
0x00:js中this的四种调用模式 1,方法调用模式 2,函数调用模式 3,构造器调用模式 4,apply.call.bind调用模式 0x01:第一种:方法调用模式 (也就是用.调用的)this ...
- JavaScript (JS) 函数补充 (含arguments、eval()、四种调用模式)
1. 程序异常 ① try-catch语法 测试异常 try-catch语法代码如下: try { 异常代码; try中可以承重异常代码, console.log(“try”) 出现异 ...
- 【转】JavaScript中的this关键字使用的四种调用模式
http://blog.csdn.net/itpinpai/article/details/51004266 this关键字本意:这个.这里的意思.在JavaScript中是指每一个方法或函数都会有一 ...
- 函数的四种调用模式.上下文调用.call.apply
闭包:函数就是一个闭包,一个封闭的作用域; 返回函数,要返回多个函数就用一个对象封装一下, 立即执行函数+return 回调函数 JS动态创建的DOM,不会被搜索引 ...
- 【温故知新】——原生js中常用的四种循环方式
一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0 网页输出“欢迎下次光临” 在网页中弹出框输入1 网页输出“查询中……” 在 ...
- Android中Activity的四种启动模式
要了解Android的启动模式先要了解一下Activity的管理方式: 1.Activity的管理机制 Android的管理主要是通过Activity栈来进行的.当一个Activity启动时,系统根据 ...
随机推荐
- C++ 记事本: 变量
C++ 变量也许和其他语言的变量没有什么差别.就是用来存储一些可能会变值的容器. 当然 C++ 变量里又分为 原子类型 的(int , char ,bool 等等),复合类型 的(struct ,cl ...
- 完美解决 向UILable 文字最后插入N张图片,支持向限制行数的UILable 最后一行插入,多余文字显示...
效果: ====直接上代码吧=== // // UILabel+StringFrame.h // QYER // // Created by qyer on 15/3/19. // Copyright ...
- Web service standards: SOAP, REST, OData, and more
Web service standards: SOAP, REST, OData, and more So far, we've covered the components of a web ser ...
- 【转】iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
本文讲诉的主要是为什么苹果2011年8月发布iOS 5后就开始拒绝App获取设备的UDID以及UDID替补方案,特别提醒开发者苹果App Store禁止访问UDID的应用上架(相关推荐:APP被苹果A ...
- C# 匿名委托、匿名方法、匿名对象、Lambda表达式
一.匿名类型可通过使用 new 运算符和对象初始值创建匿名类型.示例:var v = new { Name = "Micro", Message = "Hello&quo ...
- 1.C#中几个简单的内置Attribute
阅读目录 一:Obsolete 二:Conditional 一:Obsolete 这个内置属性是说这个方法废弃了不可用,它有两个参数,第一个参数message是说废弃的原因,第二个参数err ...
- Singleton<T>
代码如下: public class Singleton<T> where T : class { private static T _instance; private static r ...
- SAP的吐槽来源
这几天看了 梅林传奇(英国剧) , 封面是 梅林传奇的男主 对着女主 一脸无语的玩着电脑. 原来 看梅林传奇的时候,以为自己看错了,没有理会到这部剧的真谛,是自己不懂得和发现美,为了滚娘从第二季就弃了 ...
- Ranorex 5 发布,支持SAP、Oracle Forms、MS Dynamics等
Ranorex 5 发布,支持SAP.Oracle Forms.MS Dynamics等 http://blog.csdn.net/testing_is_believing/article/detai ...
- swift 方法
swift的类,结构体,枚举中都可以定义方法. 1:实例方法.类似于类成员方法 1.1实例方法是属于类,结构体,枚举的实例的方法.通过其实例访问. class CShow{ func testShow ...