首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript 的 this 小结纯粹的函数调用作为对象方法的调用作为构造函数调用apply 调用

JavaScript 语言的一个关键字。 它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。 ? 上面代码中,函数test运行时,内部会自动有一个this对象可以使用。...下面分情况,详细讨论 纯粹的函数调用 函数的最通常用法,属全局性调用,this即代表全局对象。 ?...运行结果是1 作为对象方法的调用 函数还可以作为某个对象的方法调用,这时this就指这个上级对象 ? 结果:1 作为构造函数调用 通过这个函数,可以生成一个新对象。this就指这个新对象。 ?...运行结果为1 为了表明这时this不是全局对象,我们对代码做一些改变: ? 运行结果为2,表明全局变量x的值根本没变。 apply 调用 apply()是函数的一个方法,作用是改变函数的调用对象。...它的第一个参数就表示改变后的调用这个函数的对象。因此,这时this指的就是这第一个参数。 ? apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。

2.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C++】匿名对象 ③ ( 函数返回值为对象值时 匿名对象 的 拷贝构造函数 与 析构函数 调用情况分析 )

    , 以及不同的使用场景下 , 匿名对象 的 创建与销毁情况 ; C++ 编译器 发现 使用 匿名对象 时 , 会根据 匿名对象 的用法 , 决定对 匿名对象的 处理 ; 匿名对象单独使用 : 如果只是单纯的使用...Student fun() { Student s1(18, 170); return s1; } 二、当函数返回值为对象时的情况分析 ---- 1、函数返回对象值时返回值为匿名对象 如果一个 函数的返回值...逐条分析 构造函数 / 拷贝构造函数 / 析构函数 的调用过程 : 调用带参数构造函数 m_age = 12 这是在 fun 函数中 , 调用 有参构造函数 , 创建 普通对象 ; 调用拷贝构造函数 这是在...执行结果如下 : 调用带参数构造函数 m_age = 18 调用带参数构造函数 m_age = 12 调用拷贝构造函数 调用析构函数 : m_age = 12 调用析构函数 : m_age = 12...逐条分析 构造函数 / 拷贝构造函数 / 析构函数 的调用过程 : 调用带参数构造函数 m_age = 18 这是在 main 函数中 , 调用 有参构造函数 , 创建 普通对象 ; 调用带参数构造函数

    33720

    深入理解javascript中的继承机制(2)临时构造函数模式Uber – 从子对象调用父对象的接口将继承部分封装成函数

    F,然后将Shape构造函数的原型对象赋给F的原型。...Uber – 从子对象调用父对象的接口 传统的面向对象的编程语言都会有子对象访问父对象的方法,比如java中子对象要调用父对象的方法,只要直接调用就可以得到结果了。...但在javascript中没有这样的语法,需要我们实现。...,给每个构造函数天价了一个uber属性,同时使他指向父对象的原型,然后更改了Shape的toString函数,更新后的函数,会先检查this.constructor是否有uber属性,当对象调用toString...时,this.constructor就是构造函数,找到了uber属性之后,就调用uber指向的对象的toString方法,所以,实际就是,先看父对象的原型对象是否有同String,有就先调用它。

    1.6K20

    Java 脚本化编程指南

    此外,脚本语言往往会自动执行许多类型的转换,例如, 必要时 将数字10转换为“10”。 开发快速原型:您可以避免编辑编译运行周期,只使用“编辑运行”!...脚本变量 当你的java应用程序嵌入脚本引擎和脚本,你可能希望将您的应用程序对象为全局变量暴露于脚本中。这个例子演示了如何将您的应用程序对象作为全局变量暴露于脚本中。...JavaScript支持最“自然”的类似java的语法。 ? 调用脚本函数和方法 有些时候,你可能需要多次调用一个特定脚本函数,例如你的应用程序菜单功能可能由脚本来实现。...如果你的脚本语言是基于对象(如JavaScript)或面向对象的,你可以在脚本对象上调用脚本方法。 ?...如果你的脚本语言是基于对象或者面向对象的,可以通过脚本对象的脚本方法来实现Java接口。这避免了不得不调用脚本全局函数的接口方法。脚本对象可以存储接口实现状态。 ?

    4.1K30

    前端JS手写代码面试专题(一)

    接着,通过调用toISOString()方法,将日期转换为ISO 8601扩展格式的字符串(例如:“2023-04-01T12:00:00.000Z”)。...5、你能否在JavaScript中编写一个函数来计算数组的累加求和? 在数据处理和统计分析中,累计求和(即逐步加总)是一个非常实用的技巧,它可以帮助我们理解数据随时间(或其他序列)的增长情况。...8、如何将包含连字符(-)和下划线(_)的字符串转换为驼峰命名风格呢? 在JavaScript开发中,对字符串的处理是日常任务中不可或缺的一部分。...那么,如何将包含连字符(-)和下划线(_)的字符串转换为驼峰命名风格呢?例如,字符串“secret_key_one”会被转换为“secretKeyOne”。...在replace方法中使用的回调函数将这些匹配到的字符转换为大写,而连字符或下划线本身则被移除,从而实现了转换为驼峰命名的效果。

    18210

    数据类型转换看这篇就够了

    ,String使用长度属性length来计算字符串的长度 1.1 String转换为Number parseInt(string, 10) parseInt() 函数可解析一个字符串,从位置 0...parseFloat(string) 相比上一节parseInt函数是将值转换成整数,parseFloat函数则是将值转换成浮点数且该方法方法也没有基模式(转换不了),只有对 String 类型调用这些方法...多数情况下,Number 比 parseInt 和 parseFloat 等方法会更好 2.1 Number转String n.toString( ) toString() 方法把数字转换成指定进制形式的字符串...4.1 Object转为String ? 4.2 Object对象转Object数组 对象转数组方式很多,其中包括以下几种?...类数组对象你可以看做一种“伪数组”,虽然它无法调用数组的方法,但是具备length属性,可以索引获取内部项的数据结构 4.3 日期Object转Number 将日期对象转换为数字(时间戳的形式),

    4.4K20

    JS数据类型、数组、this指向复习

    的类型 能转换成false只有以下几种情况:0,空串,null,undinfed,NaN,false string:用’'或"",或``定义的字符 var str='abcd' var str2="...,代表定义的变量值的唯一性 引用数据类型(复杂数据类型) Object,Array,Function,RegExp,String 对象类型可以添加属性 检测对象是否是对象自身的属性:hasOwnProperty...也称伪数组 LikeArray,只能通过length获取数量,和通过下标指定具体的某个元素,但不能使用数组的API方法 类数组的使用场景:获取的dom集合,arguments,… – 如何将类数组转换为数组...f=qqcom'; } } catch (e) {} this的使用场景 */ //1.直接调用函数 this即window //console.log(this===window) /* function...Fn() { console.log('Fn:',this) //this.name='1909A' } //Fn() //2. new 函数,this即为当前构造函数实例化对象 //

    1.5K10

    你不知道的javascript中类型和valueOf()和toString()~~!!

    答案就是因为Javascript为我们提供了几个包装对象:Number、String 、Boolean,这三个包装对象 在一定的条件下会把原始类型的值转成对象类型的值。...转换为例:对于原始类型转有Number比较简单,记住那几种情况就好了。...当Number函数要把一个对象转成数值的时候: 调用对象的valueOf方法,如果方法返回是一个原始值,则直接通过Number函数转。...不再往后判断 如果valueOf方法返回的是一个对象,则继续调用toString方法,如果返回一个原始值,则直接通过Number函数转 如果valueOf和toString都返回是对象,则直接报错 分几种情况来看一下...:当两个方法都返回对象的时候,会报错 最后说一下两个方法的调用情况: valueOf偏向值运算,当有运算符的时候,会先调用此方法 toString偏向显示,当用alert函数的时候,会先调用此方法

    56110

    JavaScript基础1

    什么是Javascript? Javascript是一种基于对象和事件驱动的, 与平台无关的 ,具有安全性的 ,弱类型的脚本语言。 为什么要用?...它与HTML标识结合在一起,从而方便用户的使用操作。 2.基于对象的语言。 JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。...JavaScript学习内容: 1.script 2.DOM:文档对象模型(操作HTML CSS代码) 3.BOM:浏览器对象模型(操作浏览器) JavaScript运行顺序 从html...parseInt() 将字符串转换为整数,转换第一个无效字符之前的字符串 parseFloat() 将字符串转换为数字,转换第一个无效字符之前的字符串 alert() 弹出对话框显示消息...charset="utf-8"> 强制类型转换 var iNum=10; var sNum = iNum.toString(8); //将10转换为

    1K50

    前端开发面试题答案(四)

    __proto__ = Base.prototype; Base.call(obj); 23、Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?...hasOwnProperty javaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。...(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象 (2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息 (3)设置响应HTTP请求状态变化的函数 (4)发送....") - 1>>> 0) + 2); } String.lastIndexOf() 方法返回指定值(本例中的'.')在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1。...对于'filename'和'.hiddenfile',lastIndexOf的返回值分别为0和-1无符号右移操作符(»>) 将-1转换为4294967295,将-2转换为4294967294,这个方法可以保证边缘情况时文件名不变

    2.2K20

    《现代Javascript高级教程》类型转换

    例如,字符串有对应的String包装对象,我们就可以在字符串上调用String 对象的方法: let s = 'Hello, world!'...当我们在一个字符串上调用一个方法或者访问一个属性时,JavaScript会将字符串自动转换为一个临时的String对象,然后在这个临时对象上调用方法或者访问属性。完成后,临时对象就会被销毁。...对象转换为字符串: 当一个对象需要被隐式转换为字符串时,JavaScript会尝试调用对象的toString()方法。toString()方法是一个内置方法,它返回表示对象的字符串形式。...对象转换为数字: 当一个对象需要被隐式转换为数字时,JavaScript会尝试调用对象的valueOf()方法。valueOf()方法是一个内置方法,它返回表示对象的原始数值形式。...下面是一些常用的类型转换函数和操作符以及它们的用法和注意事项: String() 函数:用于将一个值转换为字符串类型。

    23620

    JavaScript|类型转换,你真的会么?

    开发中使用较少,具体的细节,可以去参考 JavaScript 的语言标准 04 装 箱 转 换 每一种基本类型 Number、String、Boolean、Symbol 在对象中都有对应的类...全局的 Symbol 函数无法使用 new 来调用,但可以利用装箱机制来得到一个 Symbol 对象,可以利用一个函数的 call 方法来强迫产生装箱。...使用内置的 Object 函数,可以在 JavaScript 代码中显式调用装箱能力: 每一类装箱对象皆有私有的 Class 属性,这些属性可以用 Object.prototype.toString...05 拆 箱 转 换 在 JavaScript 标准中,规定了 ToPrimitive 函数,它是对象类型到基本类型的转换(即,拆箱转换)。...对象到 String 和 Number 的转换都遵循“先拆箱再转换”的规则。 通过拆箱转换,把对象变成基本类型,再从基本类型转换为对应的 String 或者 Number。

    42740

    ES6学习之函数传参

    不过很多新特性普及度并不高,通过学习ES6的一些特性后,可以更好地将其运用到实际项目中,对于浏览器支持度,我觉得可以乐观一些,毕竟ES6是趋势,而且现在也有诸如babel这类工具可以帮助我们将ES6转换为...而使用arguments对象则包括了所有的参数,而且arguments并非一个真正的数组,无法直接调用数组的一些方法。...值得一提的是,可以用函数作为缺省值,只有在参数缺省的时候才会对该函数进行调用。另一个特性是后面的缺省值可以直接使用前面所声明的参数变量。...例如,在下面代码片段中,函数调用前后a的值都为5。...为了避免在函数运行中出现参数为undefined的情况,我们可以在函数调用的时候,就对参数进行检查,对于必须提供的参数可以在一开始就抛出异常,这有利于开发阶段提前解决问题,也有利于函数的健壮性和可测试性

    2K100

    02JavaScript基础语法部分

    Bool = new Boolean(true); 创建对象的语法格式 new 构造函数(); 例如var Bool = new Boolean(true);表示创建一个值为true的变量Bool...语法结构变量名/对象名 instanceof 构造函数/数据类型 console.log(Str instanceof String); 特殊类型 undefined 得到undefined这个值的情况...函数中的return语句的返回值的设置为undefined 访问某一对象中不存在的属性时。 null ? null 是5个基本类型的一个,但是得到的类型是object。...类型 console.log(typeof String(100)); console.log(typeof String(true)); 关于转换为数字时JavaScript提供了提供了两个函数用户转换为...转化为 100 100转化为 100 100.55转化为 100.55 */ 关于转换为string类型JavaScript还提供一个toString方法。

    1.7K20

    ES6学习之函数传参

    不过很多新特性普及度并不高,通过学习ES6的一些特性后,可以更好地将其运用到实际项目中,对于浏览器支持度,我觉得可以乐观一些,毕竟ES6是趋势,而且现在也有诸如babel这类工具可以帮助我们将ES6转换为...而使用arguments对象则包括了所有的参数,而且arguments并非一个真正的数组,无法直接调用数组的一些方法。...值得一提的是,可以用函数作为缺省值,只有在参数缺省的时候才会对该函数进行调用。另一个特性是后面的缺省值可以直接使用前面所声明的参数变量。...例如,在下面代码片段中,函数调用前后a的值都为5。...为了避免在函数运行中出现参数为undefined的情况,我们可以在函数调用的时候,就对参数进行检查,对于必须提供的参数可以在一开始就抛出异常,这有利于开发阶段提前解决问题,也有利于函数的健壮性和可测试性

    1.6K20

    ES6学习之函数传参

    不过很多新特性普及度并不高,通过学习ES6的一些特性后,可以更好地将其运用到实际项目中,对于浏览器支持度,我觉得可以乐观一些,毕竟ES6是趋势,而且现在也有诸如babel这类工具可以帮助我们将ES6转换为...而使用arguments对象则包括了所有的参数,而且arguments并非一个真正的数组,无法直接调用数组的一些方法。...值得一提的是,可以用函数作为缺省值,只有在参数缺省的时候才会对该函数进行调用。另一个特性是后面的缺省值可以直接使用前面所声明的参数变量。...例如,在下面代码片段中,函数调用前后a的值都为5。...为了避免在函数运行中出现参数为undefined的情况,我们可以在函数调用的时候,就对参数进行检查,对于必须提供的参数可以在一开始就抛出异常,这有利于开发阶段提前解决问题,也有利于函数的健壮性和可测试性

    1.9K20

    前端入门8-JavaScript语法之数据类型和变量声明正文-数据类型、变量

    但对于程序而已,就会发生不可控的问题,而且极难排查,所以要慎用全局变量。当然针对这种情况也有很多解决方案,后续讲到函数一节中会来讲讲。...在后续讲函数时会讲到,一个函数被调用的方式有多种:其中,有跟 new 关键字一起使用,此时叫这个函数为构造函数;如果只是简单的调用,此时叫函数调用;如果是作为对象的属性被调用,此时称方法调用;不同的调用方式会有一些区别...所以,这里当包装对象使用构造函数方式使用时,可以显示的将原始类型数据转换为包装对象;但如果不作为构造函数,只是简单的函数调用,其实就是将传入的参数转换为原始类型,参数不单可以是包装对象类型,也可以是其他类型...对象 -> 布尔 首先,所有的对象,不管的函数、数组还是普通对象,只要这个对象是定义后存在的,那么它转换为布尔值都是 true,所以对象转布尔也很简单。...对象 -> 字符串 对象转字符串,主要是需要借助两个方法: 如果对象具有 toString(),则调用这个方法,如果调用后返回了一个原始值,那么就将这个原始值转为字符串,转换结束。

    1.5K30
    领券