javascript:this的解释

一、
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>

<script>

// this	: 这个
// this: 指的是调用 当前 方法(函数)的那个对象

function fn1(){
	// this
}
// fn1();			this => window
// oDiv.onclick = fn1;			this => oDiv
/*
oDiv.onclick = function (){
	fn1();					fn1() 里的this => window
};

<div onclick="    this     fn1();      "></div>     fn1(); 里的 this 指的是 window
*/

// alert( this );		// object window

// window 是 JS “老大”
// window.alert( this );

function fn1(){
	alert( this );				// window
}
// fn1();
// window.fn1();
</script>

</head>

<body>

<input id="btn1" type="button" value="按钮" />

<input id="btn2" type="button" onclick=" fn1(); " value="按钮2" />

<script>
var oBtn = document.getElementById(‘btn1‘);
// oBtn.onclick = fn1;
oBtn.onclick = function (){
	// this
	fn1();
};
</script>

</body>
</html>

二、

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

<script>

/*

alert(this); window

fn1(this);

function fn1(obj){

obj => window

}

oDiv.onclick = function (){

this

fn1(this);

};

function fn1(obj){  obj => oDiv }

*/

window.onload = function (){

var aBtn = document.getElementsByTagName(‘input‘);

var that = null; // 空

for(var i=0; i<aBtn.length; i++){

/*

aBtn[i].onclick = function (){

// this.style.background = ‘yellow‘;

that = this;

fn1();

};

*/

aBtn[i].onclick = fn1;

}

function fn1(){

// this =>  window

// that.style.background = ‘yellow‘;

// this.style.background = ‘red‘;

}

};

</script>

</head>

<body>

<input type="button" value="按钮1" />

<input type="button" value="按钮2" />

<input type="button" value="按钮3" />

</body>

</html>

三、

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

<style>

li { width:100px; height:150px; float:left; margin-right:30px; background:#f1f1f1; position:relative; z-index:1; }

div { width:80px; height:200px; background:red; position:absolute; top:75px; left:10px; display:none; }

</style>

<script>

window.onload = function (){

var aLi  = document.getElementsByTagName(‘li‘);

var that = null;

for( var i=0; i<aLi.length; i++ ){

aLi[i]. = function (){

that = this;

fn1();

};

aLi[i]. = function (){

this.getElementsByTagName(‘div‘)[0].style.display = ‘none‘;

};

}

function fn1(){

that.getElementsByTagName(‘div‘)[0].style.display = ‘block‘;

}

};

</script>

</head>

<body>

<ul>

<li>

<div></div>

</li>

<li>

<div></div>

</li>

<li>

<div></div>

</li>

</ul>

</body>

</html>

时间: 2024-12-24 07:18:47

javascript:this的解释的相关文章

javascript 对象简单解释

在javascript 中 数组是对象,函数是对象,正则表达式是对象,当然对象自然也是对象. 对象是属性的容器,每个属性都有名字和值,名字可以是包括空字符串在内的任意字符串,属性值是除undefined值之外的任何值. 若在对象中检索一个并不存在的成员变量值,将返回一个undefined值. 使用 || 运算符填充默认值: var middel = stooge["middle-name"] || "{none}" 尝试检索一个undefined值可能倒是typeE

JavaScript常见术语解释

1.文档对象模型(DOM,Document Object Model) 是针对XML但经过扩展用于HTML的应用程序编程接口.DOM把整个页面映射为一个多层节点结构.HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据. 2.浏览器对象模型(BOM,Brower Object Model) 是支持可以访问和操作浏览器窗口的浏览器对象模型,BOM只处理浏览器窗口和框架,它作为JavaScript实现的一部分但却没有相关的标准,这个问题在HTML5中得到了解决. 3

JavaScript Arguments.callee解释

Arguments.callee : 返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文.[function.]arguments.callee可选项 function 参数是当前正在执行的 Function 对象的名称.说明:callee 属性的初始值就是正被执行的 Function 对象.callee 属性是 arguments 对象的一个成员,他表示对函数对象本身的引用,这有利于匿名函数的递归或确保函数的封装性,例如下边示例的递归计算1到n的自然数之和.而

JavaScript那些事儿-预解释

带var关键字预解释 让我们先看下这段代码执行的结果: alert(n);//弹出undefined var n = 10; 弹出的结果是undefined,为何不是10?让我们再看下面这段代码执行的结果: alert(n); n = 10; 运行报如下错误:,为何这次会报错,原因是代码在运行的时候,没有声明这个变量n:通过这两段代码的比较,我们发现带var关键字和不带var关键字声明的变量是有区别的,带var声明的变量在代码执行之前,似乎浏览器已经给了它们一个初始值undefined,因此我们

扒一扒JavaScript 预解释

带var关键字预解释 让我们先看下这段代码执行的结果: 代码如下: alert(n);//弹出undefinedvar n = 10; 弹出的结果是undefined,为何不是10?让我们再看下面这段代码执行的结果: 代码如下: alert(n);n = 10; 运行报如下错误: 为何这次会报错,原因是代码在运行的时候,没有声明这个变量n:通过这两段代码的比较,我们发现带var关键字和不带var关键字声明的变量是有区别的,带var声明的变量在代码执行之前,似乎浏览器已经给了它们一个初始值unde

JavaScript预解释是一种毫无节操的机制

前言 JavaScript是一门解释型的语言 , 想要运行JavaScript代码需要两个阶段 编译阶段: 编译阶段就是我们常说的JavaScript预解释(预处理)阶段,在这个阶段JavaScript解释器将完成把JavaScript脚本代码转换到字节码 执行阶段: 在编译阶段JavaScript解释器借助执行环境把字节码生成机械码,并从上到下按顺序执行 本文就重点介绍预解释,框架图如下: 一.什么是预解释 预解释:JavaScript代码执行之前,浏览器首先会默认的把所有带var和funct

JavaScript作用域链

JavaScript作用域链 之前写过一篇JavaScript 闭包究竟是什么的文章理解闭包,觉得写得很清晰,可以简单理解闭包产生原因,但看评论都在说了解了作用域链和活动对象才能真正理解闭包,起初不以为然,后来在跟公司同事交流的时候发现作用域和执行环境确实很重要,又很基础,对理解JavaScript闭包很有帮助,所以在写一篇对作用域和执行环境的理解. 作用域 作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期,在JavaScript中变量的作用域有全局作用域和局部作用域. 单纯

JavaScript的前世今生

和CSS一样,JavaScript在各浏览器下并非完全一致,它所带来的兼容性问题时常困扰着我们,以至于现在“能否处理流行浏览器的兼容性问题”成为了检验一个程序员是否合格的标准之一.了解JavaScript的前世今生或许能够帮助我们更好的理解和处理浏览器带来的兼容性问题.同时,初学者站在更高的地方去重新审视一下JavaScript,或许能够揭开它的神秘面纱,一旦它失去了神秘性而变得平易近人,学习起来就会更加轻松. 前些天,我看了一本书<JavaScript核心概念及实践>,邱俊涛著.书中过半的内

MDN——javascript——入门——第一章——知识点总结

1.什么是js: JavaScript 是允许你在网页中实现复杂事情的一门编程语言 例子: var para = document.querySelector('p'); para.addEventListener('click', updateName); function updateName() { var name = prompt('Enter a new name'); para.textContent = 'Player 1: ' + name; } JS APIs: 1浏览器 A

Javascript 中的函数式编程

本文和大家分享的主要是javascript中函数式编程相关内容,一起来看看吧,希望对大家学习javascript有所帮助. 函数式编程(functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程. 函数式编程,近年来一直被炒得火热,国内外的开发者好像都在议论和提倡这种编程范式.在众多的函数式语言中,Jav