前两天在前端群看到群友问的一个问题,问题如下:

var Name = 'window';

var obj = {

  Name:'obj字符串',

  getName:function(){

   console.log(name); 

  }

}

obj.getName(); //输出window

问:为什么会输出window,而不是obj字符串?

这就会用到我们标题所提到的this了,this是JavaScript中的关键字,指的是当前的上下文对象,简单的说就是方法/属性的所有者,因为上面代码中,我们输出的就是全局变量Name,而不是对象里面私有的Name,所以会输出"window"。

我们把上面代码修改一下:

var Name = 'window';

var obj = {

  Name:'obj字符串',

  getName:function(){

   console.log(this.Name); 

  }

}

obj.getName(); //输出obj字符串

上面代码中,obj是一个对象,拥有Name属性与getName方法,在getName中this指向了所属的对象obj,所以就实现了输出"obj字符串";

js对象中关于this关键字的作用的更多相关文章

  1. js对象中动态读取属性值 动态属性值 js正则表达式全局替换

    $(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...

  2. 在 JS 对象中使用 . 和 [] 操作属性的区别

    在 JS 对象中,调用属性一般有两种方法--点和中括号的方法. 例如 使用点方法 var obj = { name: "cedric" } console.log(obj.name ...

  3. 遍历js对象中的属性

    可以使用js自带的for in.也可以使用Ext JS中的方法来遍历js对象中的属性 代码如下: /** 遍历对象 */ var person = {name:'张泰松',age:28}; //js方 ...

  4. 在当前对象中可以使用this关键字指代当前对象

    在当前对象中可以使用this关键字指代当前对象

  5. js对象中in和hasOwnProperty()区别

    记录学习中容易混淆的一些方法. prop in object prop一个字符串类型或者 symbol 类型的属性名或者数组索引(非symbol类型将会强制转为字符串). objectName检查它( ...

  6. JS对象中的原型

    对象的原型:每个对象都连接一个原型对象,并且它可以从中继承属性.所有通过对象字面量创建的对象都连接到object.prototype.当你创建一个新对象时,你可以选择某个对象作为它的原型.原型连接在更 ...

  7. [转]js对象中取属性值(.)和[ ]的区别

    原文地址:https://www.jianshu.com/p/6a76530e4f8f 今天在写js的过程中遇到这么一个问题,取一个对象的属性值,通过obj.keys怎么都取不出来,但是用obj[ke ...

  8. JS对象中属性的增删改查

    对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性 对象的分类:           1.内建对象                 -在ES标准中定义的对象,在任何的ES的实现中都可以 ...

  9. Swift中声明协议中的class关键字的作用

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近在Cocos2D编程for Swift中看到以下一个代码片 ...

随机推荐

  1. Python - 使用 PostgreSQL 数据库

    基本用法 # -*- coding: utf-8 -*- # !/usr/bin/python # 需要安装下面的驱动包 import psycopg2 # 连接到一个现有的数据库,如果数据库不存在, ...

  2. Mock相关知识和简单应用

    一.moco的简单应用 moco地址:https://github.com/dreamhead/moco api文档地址: https://github.com/dreamhead/moco/blob ...

  3. 执行PHP -m报错Xdebug MUST be loaded as a Zend extension

    Xdebug扩展安装后执行PHP -m报错: <br /><b>Warning</b>: Xdebug MUST be loaded as a Zend exten ...

  4. PostgreSQL 安装之 CentOS 7 x64 RPM 安装

    PostgresQL 安装环境 一.CentOS 7 安装 1. 环境说明 CentOS7 PosgreSQL 11.2 2. 在线安装 到目前为止(2019-08-10),CentOS7 默认携带了 ...

  5. 限制IP每分钟访问10次

    转载:https://www.jianshu.com/p/d1326ab657ff IP请求限制,之前用过redis的set设置时间戳一分钟过期:也用过nginx的IP限流配置.前者,没法解决“用户在 ...

  6. javascript常用知识汇总

    javascript这个语言庞大而复杂,我用了三年多了,还是皮毛都不会.从刚开始的jquery,到后来的es6,每天都在学习,每天都在忘记. 1.禁止手机虚拟键盘弹出 在开发适配手机的页面时,出现了这 ...

  7. 听《Sara》

    Sara这首歌太好听了,虽然没有清楚具体是唱什么,但我感觉是讲一个故事,很好奇,我找到了歌词. Sara 塞拉 鲍勃迪伦 I laid on a dune, I looked at the sky, ...

  8. linux下载文件到本地_把linux服务器的文件下到本地windows

    tar -cvf script.tar scriptsz script.tar 文件夹先要打包,并且要指定打包的名字. 具体:  sz/rz命令:  一般来说,linux服务器大多是通过ssh来进行远 ...

  9. java MVC 自定义类型转换器(Formatter、AnnotationFormatterFactory)

    下面一个事例,是将传入的一个身份证号,转换成一个对象(提取身份证号的地址.出身日期.性别等) 实体类 Person 有三个字段如下: String province; //地址 Date birthd ...

  10. Numpy入门(三):Numpy概率模块和线性代数模块

    Numpy中经常使用到的两个模块是概率模块和线性代数模块,random 和 linalg 两个模块. 概率模块 产生二项分布的随机数:np.random.binomial(n,p,size=-),其中 ...