`
Odysseus_110
  • 浏览: 120609 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

javascript 权威指南 学习笔记3:javascript 作用域

阅读更多
var testvar = 'window属性';
var o3 = {
   testvar:'3',
   testvar2:'3**',
   fun:function(){
      alert('o3: '+this.testvar);//'obj3'
      var inner = function(){
         alert('o3-inner: '+this.testvar);//'window属性'
         alert('o3-inner: '+this.testvar2);//undefined(未定义)
      };
      inner();
   }
};
o3.fun();

  调用函数时,你可以把this 想象为每个函数内的一个特殊(躲起来的)参数。无论什么时候,JavaScript都会把this 放到function内部。它是基于一种非常简单的思想:如果函数直接是某个对象的成员,那么this 的值就是这个对象。如果函数不是某个对象的成员那么this 的值便设为某种全局对象(常见有,浏览器中的window对象)。下面的内部函数可以清晰的看出这种思想。

 

Since the Window object is the global object in client-side JavaScript, all global variables are defined as properties of the window. For example, the following two lines of code perform essentially the same function:

var answer = 42;     // Declare and initialize a global variable

window.answer = 42;  // Create a new property of the Window object

span.meecallWrapper { font-size:1em; color:#B0E0E6; text-decoration:none; } a.meecallLink { color:#000000; text-decoration:none; } span.meecallInLink:hover { background-color:#B0E0E6; }

 

引用js文件的好处:

When JavaScript functions are used by more than one page, placing them in a separate JavaScript file allows them to be cached by the browser, making them load more quickly. When JavaScript code is shared by multiple pages, the time savings of caching more than outweigh the small delay required for the browser to open a separate network connection to download the JavaScript file the first time it is requested.

 

setCapture函数的作用就是将后续的mouse事件都发送给这个对象,releaseCapture就是将鼠标事件还回去,由 document、window、object之类的自行来处理,这样就保证了在拖动的过程中,不会由于经过了其它的元素而受到干扰。另外,还有一个很重 要的事情是,在Win32上,mouse move的事件不是一个连续的,也就是说,并不是我们每次移动1px的鼠标指针,就会发生一个mousemove,windows会周期性检查mouse 的位置变化来产生mousemove的事件。所以,如果是一个很小的页面对象,比如一个直径5px的圆点,如果没有setCapture和 releaseCapture,那么在鼠标按住之后,快速的移动鼠标,就有可能鼠标移动走了,但是小圆点还在原地,就是因为下一次的mousemove事 件已经不再发给这个圆点对象了。

 

 

 

<input type="button" value="Click Here" onclick="alert(typeof this.onclick);"> 

If you click the button, it displays a dialog box containing the word "function," not the word "string." (Note that in event handlers, the this keyword refers to the object on which the event occurred.

 

 

 

 

<script>

// This function recursively looks at Node n and its descendants, 

// replacing all Text nodes with their uppercase equivalents.

function uppercase(n) {

    if (n.nodeType == 3 /*Node.TEXT_NODE*/) {

        // If the node is a Text node, create a new Text node that

        // holds the uppercase version of the node's text, and use the

        // replaceChild(  ) method of the parent node to replace the

        // original node with the new uppercase node.

        var newNode = document.createTextNode(n.data.toUpperCase(  ));

        var parent = n.parentNode;

        parent.replaceChild(newNode, n);

    }

    else {

        // If the node is not a Text node, loop through its children

        // and recursively call this function on each child.

        var kids = n.childNodes;

        for(var i = 0; i < kids.length; i++) uppercase(kids[i]);

    }

}

</script>



<!-- Here is some sample text. Note that the <p> tags have id attributes. -->

<p id="p1">This <i>is</i> paragraph 1.</p>

<p id="p2">This <i>is</i> paragraph 2.</p>



<!-- Here is a button that invokes the uppercase(  ) function defined above. -->

<!-- Note the call to document.getElementById(  ) to find the desired node. -->

<button onclick="uppercase(document.getElementById('p1'));">Click Me</button> 
分享到:
评论

相关推荐

    javascript权威指南 学习笔记之变量作用域分享

    在《JavaScript权威指南》第五版中,对变量作用域进行了深入的介绍,通过对作者的学习笔记梳理,我们可以系统地了解变量作用域相关的知识点。 首先,我们需要明确变量作用域的两个基本类型:全局作用域和局部作用域...

    JavaScript-学习笔记.pdf

    以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...

    javascript参考教程javascript高级教程javascript权威指南(第四版)

    《JavaScript权威指南(第四版)》则是一本详尽的JavaScript学习资料,它涵盖了语言的最新发展,例如ES6及后续版本引入的新特性。这里你可以了解到箭头函数、解构赋值、类与继承、模板字符串、迭代器和生成器等。...

    javascript权威指南笔记

    9. **闭包**:闭包是指函数能够记住并访问其词法作用域,即使该函数已经被返回或者已经执行完毕。闭包可以用来保护变量,实现数据封装。 10. **构造器和类**:JavaScript中的构造器是通过函数来创建类实例的,可以...

    JavaScript 入门 新手学习笔记

    这篇"JavaScript入门新手学习笔记"提供了全面的学习资源,适合初学者系统性地掌握这一技术。 笔记可能包含了以下关键知识点: 1. **基础语法**:JS的基础包括变量(var、let、const)、数据类型(如字符串、数字、...

    javascript入门学习笔记

    这份"javascript入门学习笔记"旨在为初学者提供一个全面且深入的JavaScript学习路径。 一、基础语法 JavaScript的基础包括变量、数据类型、操作符、流程控制等。变量用于存储数据,数据类型分为基本类型(如字符串...

    JavaScript学习笔记

    所有未声明作用域的变量都被视为全局变量,并成为`window`对象的属性。 ```javascript var objectA = { name: "myName" }; // 全局变量 alert(window.objectA.name); // 通过window对象访问 ``` 理解全局对象的...

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    JavaScript基础教程笔记

    ### JavaScript基础教程笔记知识点 #### 一、JavaScript简介 - **定义**:JavaScript是一种轻量级的编程语言,主要用于Web浏览器中的网页交互控制。 - **发展历史**:1995年由Netscape公司的Brendan Eich设计并...

    javascript学习笔记整理知识点整理

    这份“javascript学习笔记整理知识点整理”是针对初学者的一份宝贵资料,涵盖了JavaScript的基础知识,旨在帮助新手快速入门并掌握这门语言的核心概念。 一、变量与数据类型 在JavaScript中,变量用于存储数据。...

    JavaScript练习程序学习笔记.rar

    此外,还需了解函数表达式(匿名函数、箭头函数)和作用域(全局作用域、局部作用域、闭包)的概念。 在JavaScript中,对象是核心概念之一。它们由键值对组成,可以用来表示复杂的数据结构。原型和原型链是...

    狂神说系列 JavaScript笔记

    【狂神说系列 JavaScript笔记】是一份全面且深入的JavaScript学习资源,旨在帮助开发者和初学者深入理解这门广泛应用于Web开发的脚本语言。这份笔记涵盖了JavaScript的基础语法、核心概念以及高级特性,旨在构建一个...

    javascript高级编程(学习笔记 包括 1 , 2 版)

    JavaScript 高级编程的学习笔记涵盖了ECMAScript中的基础概念,特别是关于变量、数据类型和运算符的使用。在ECMAScript中,变量可以存储两种基本类型的值:原始值(Primitive Values)和引用值(Reference Values)...

    javascript学习资料 + 笔记

    这份"javascript学习资料 + 笔记"压缩包显然旨在帮助新手快速掌握这门语言,为他们的编程之旅提供必要的基础知识。 JavaScript的学习首先要从基础语法开始,包括变量声明(var、let、const)、数据类型(字符串、...

    Javascript学习笔记(传智播客视频学习笔记+代码)

    "Javascript学习笔记(传智播客视频学习笔记+代码)"是一份全面介绍JavaScript基础知识的学习资源,适用于初学者。这份笔记结合了传智播客的web前端培训视频内容,提供了丰富的理论讲解和实践代码,帮助读者从零开始...

    JavaScript-学习笔记.docx

    JavaScript是一种广泛应用...以上就是JavaScript学习笔记中的主要知识点,理解和掌握这些内容对于深入学习JavaScript至关重要。在实际编程中,还需要结合具体的场景灵活运用,并不断实践和探索更高级的特性和最佳实践。

Global site tag (gtag.js) - Google Analytics