javaScript中的this作用域

  javaScript中的this作用域java的区别是,java中的this是在编译中确定,

javaScript中的this是在运行时确定的,不同的调用方式,决定js中的this指向不同的对象。

代码实现:

  //this作用域
  function sayName(){
    console.log(this.name);
    console.log(this ===d1);
    console.log(this ===d2);
    console.log(this ===window);

  }
  sayName();

  function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayName = sayName;
  }

  var d1 = new Person("ricky",24);
    d1.sayName();

    var d2 = new Person("rose",24);
  d2.sayName();

执行:sayName();时,这句打印的值为true  console.log(this ===window);

执行:d1.sayName();时,这句打印的值为true  console.log(this===d1);

执行:d2.sayName();时,这句打印的值为true  console.log(this ===d2);

时间: 2024-10-09 21:49:37

javaScript中的this作用域的相关文章

JavaScript中变量、作用域和内存问题(JavaScript高级程序设计第4章)

一.变量 (1)ECMAScript变量肯能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象. (2)基本数据类型是按值访问,可以操作保存在变量中的实际的值:引用类型的值是保存在内存中对象,操作对象时,实际上是在操作对象的引用而不是实际的对象,引用类型的值是按引用访问的. (3)传递参数.ECMScript中所有的函数的参数都是按值传递的. function setName(obj){ obj.name = "Nichola

JavaScript 中变量、作用域和内存问题的学习

这是我学习JavaScript的第二篇文章,之前做过几年的Java开发,发现JavaScript虽然也是面向对象的语言但是确实有很多不同之处.就本篇博客,主要学习总结一下最近学习到的JavaScript的知识,其中有些是网络上的,不过对于理解JavaScript,和在工作总是会很实用的,所以总结了下来: 那么就开始吧,首先是变量 在JavaScript中变量分为两种:一种是基本类型,基本类型值在内存中占用固定大小的空间,因此被保存在栈内存中.从一个变量向另一个变量复制基本类型的值,会创建这个值的

【译】学习JavaScript中提升、作用域、闭包的终极指南

这似乎令人惊讶,但在我看来,理解JavaScript语言最重要和最基本的概念是理解执行上下文.通过正确学习它,你将很好地学习更多高级主题,如提升,作用域链和闭包.考虑到这一点,究竟什么是"执行上下文"?为了更好地理解它,我们首先来看看我们如何编写软件. 编写软件的一种策略是将代码分解为单独的部分.虽然这些"部分"有许多不同的名称(功能,模块,包等),但它们都是为了一个目的而存在 - 分解和管理应用程序的复杂性.现在,不要像编写代码的人那样思考,而是根据JavaScr

JavaScript中的作用域 、作用域链和闭包

JavaScript中作用,作用域链和闭包详解 一.作用域在js中有全局变量和局部变量之分:比如var a = 1;function sum(){var b=1console.log(b) //1console.log(a) //2 }sum()console.log(a) //3console.log(b) //4 例子中 a 是全局变量,b是局部变量(定义在函数内部,只能在函数内部访问)所以第1行正确 函数内部也能访问全局变量 a所以第2行也能正确 第三行也正确.第4行有外部不能访问内部变量

javascript中的立即执行函数(function(){…})()

javascript中的立即执行函数(function(){…})() 深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是用(function(){…})()包住业务代码,使用jquery时比较常见. ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要

【转】深入浅出 JavaScript 中的 this

Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象.一般在编译期确定下来,或称为编译期绑定.而在 JavaScript 中,this 是动态绑定,或称为运行期绑定的,这就导致 JavaScript 中的 this 关键字有能力具备多重含义,带来灵活性的同时,也为初学者带来不少困惑.本文仅就这一问题展开讨论,阅罢本文,读者若能正确回答 JavaScript 中的 What ’s this 问题,作为作者,我就会觉得花费这么多功夫,撰写这样一篇文章是值得的. Java

深入浅出 JavaScript 中的 this

本文来自:http://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/ JavaScript 语言中的 this 由于其运行期绑定的特性,JavaScript 中的 this 含义要丰富得多,它可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式.JavaScript 中函数的调用有以下几种方式:作为对象方法调用,作为函数调用,作为构造函数调用,和使用 apply 或 call 调用.下面我们将按照调用方式的不同,分别讨论

【JavaScript】JavaScript中的陷阱大集合

本文主要介绍怪异的Javascript,毋庸置疑,它绝对有怪异的一面.当软件开发者开始使用世界上使用最广泛的语言编写代码时,他们会在这个过 程中发现很多有趣的“特性”.即便是老练的Javascript开发者也可以在本文找到一些有趣的新陷阱,请留意这些陷阱,当然也可以尽情享受由这些陷阱 带来的“乐趣”! AD: 本文主要介绍怪异的Javascript,毋庸置疑,它绝对有怪异的一面.当软件开发者开始使用世界上使用最广泛的语言编写代码时,他们会在这个过 程中发现很多有趣的“特性”.即便是老练的Java

javascript中的this与函数讲解

前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码,都存放在Window函数内(这是个假设),也就是说javascript中只有函数作用域(前面假设做前提下). 作用域是什么 作用域是一个盒子,盒子内部的变量只能在当前盒子中使用,作用域盒子是可以嵌套的,内部盒子的变量对父级盒子是不可见的,因为盒子封闭了他们并且盒子不透明,但是盒子可以看到父级盒子内部