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

Javathis关键字详解

一、this关键字主要有三个应用: (1)this调用本类属性,也就是类成员变量; (2)this调用本类其他方法; (3)this调用本类其他构造方法,调用时要放在构造方法首行...此时this这个关键字就起到作用了。this这个关键字其代表就是对象成员变量或者方法。...从这个应用,我们可以看出this关键字其代表就是对象名字。 其实如果是局部变量的话,也是相同道理。如在上面的代码,name不是形式参数,而是一个局部变量。...在第一个没有带参数构造方法,使用了this(“Hello!”)这句代码,这句代码表示什么含义呢?在构造方法中使this关键字表示调用类构造方法。...此时这个this关键字就代表类名称。如代码在上面student类,那么代码代表含义就是return student。

38910

JS控制好this关键字指向

javascript this 指向不太好控制,理解不好的话很容易错误 下面几个示例可以加深对this指向理解 (1)内联事件 <a href="#" onclick="alert(this.tagName...( duang.hi, 1000); setInterval( duang.hi, 1000); 这两种情况都会弹出“我是 全局” 因为setTimeout和setInterval都会改变this<em>的</em>指向为...: "duang", hi: function() { alert("I'm " + this.name); } }; btn.onclick = duang.hi; 点击按钮后,并没弹出duangname...属性值,而是弹出了buttonname属性 说明这种方法会使this指向dom节点本身 如果想this指向duang对象,可以使用匿名函数解决 btn.onclick = function ()...函数 这时点击结果为 "I'm 全局",说明this指向了window对象 注意,使用call和apply调用方法时,this指向会被改为window

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

    jssettimeout()用法详解_jssetattribute

    大家好,又见面了,我是你们朋友全栈君。 setTimeout与setTimeInterval均为window函数,使用顶层window一般都会省去,这两个函数经常稍不留神就使用错了。...setTimeout内函数先不执行,隔一段时间后再执行,函数后面的数字是隔时间,单位是毫秒(千分之一秒) 比如: setTimeout(‘alert(“hello world!”)’..., 400); setInterval() 方法可按照指定周期(以毫秒计)来调用函数或计算表达式,直到clearInterval()被调用或窗口被关闭。 比如: Stop interval setInterval动作作用是在播放动画时...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    15K20

    Javafinal关键字详解

    那么我们能不能随意继承API中提供类,改写其内容呢?显然这是不合适。为了避免这种随意改写情况,Java提供了final 关键字,用于修饰不可改变内容。 final: 不可改变。...类:被修饰类,不能被继承。 方法:被修饰方法,不能被重写。 变量:被修饰变量,不能被重新赋值。...对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。...有抽象方法abstract类被继承时,其中方法必须被子类Override,而final不能被Override。...因为每次循环,都是一次新变量c。这也是大家需要注意地方。 局部变量—引用类型 引用类型局部变量,被final修饰后,只能指向一个对象,地址不能再更改。

    29720

    干货——详解Java关键字

    在平时编码,我们可能只注意了这些static,final,volatile等关键字使用,忽略了他们细节,更深层次意义。 本文总结了Java中所有常见关键字以及一些例子。...static不可以修饰局部变量(java语法规定) 没想到static能有这么多需要注意,可以说Java语法还是有很多可以深究. final 关键字 ---- 概述: final关键字,在平时过程也是很常见...如果改变了被volatile关键字修饰了,那么JVM将会标记它为共享变量,共享变量一经修改,就会立即同步到主存,并且通知其他线程(CPU缓存)中值生效,请去主存读取该值。...assert关键字 assert断言 在目前java编码,是不推荐使用,这里只是稍微了解一下: 使用方式: 1、assert 如果为true,则程序继续执行...transient关键字  Java,一个类想要序列化,可以通过实现Serilizable接口方式来实现,实现该接口之后,该类所有属性和方法都会自动序列化。

    42130

    Java`volatile`关键字详解

    Javavolatile关键字详解 在Java并发编程,volatile关键字是实现共享变量可见性重要手段。...本地缓存:每个线程在其工作内存中保存一份变量拷贝,以提高访问速度。对变量读取和写入,线程首先访问自己工作内存,只有当工作内存没有这个变量时,才会从主存读取。 2....数据一致性问题 在多线程环境,如果一个线程对共享变量进行修改,其他线程可能不会立即看到这个修改,因为它们可能还在使用自己工作内存旧值。这种现象被称为可见性问题。...读操作保障 读取主存:当一个线程读取volatile变量时,它会直接从主存读取最新值,而不是从本地缓存读取。...重排序与volatile Java编译器和运行时环境会对指令进行重排序以优化性能,但这可能导致线程间可见性问题。volatile关键字阻止重排序发生。

    9210

    JavaVolatile关键字详解

    这个代码在单线程运行是没有任何问题,但是在多线程运行就会有问题了。...但是用volatile修饰之后就变得不一样了:   第一:使用volatile关键字会强制将修改值立即写入主存;   第二:使用volatile关键字的话,当线程2进行修改时,会导致线程1工作内存缓存变量...下面这段话摘自《深入理解Java虚拟机》:   “观察加入volatile关键字和没有加入volatile关键字时所生成汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令”   lock...5、使用volatile关键字场景 synchronized关键字是防止多个线程同时执行一段代码,那么就会很影响程序执行效率,而volatile关键字在某些情况下性能要优于synchronized,但是要注意...volatile关键字是无法替代synchronized关键字,因为volatile关键字无法保证操作原子性。

    50320

    简单理解JSthis关键字 - wuuconixs blog

    背景 之前在看《You Don’t Know JS - 1st Edition》这本书时候,它对this解释是针对各个this在哪里被调用分为四种情况。...f是作为对象o一个方法被调用,所以this指向对象o 《You Don’t Know JS隐式绑定就属于这种最简单和清晰情况。...独立函数调用 这种情况对应《You Don’t Know JS默认绑定。...所以显示绑定在某种程度上也可以看作暂时把函数f当作了对象o方法,然后调用。 构造函数this 这对应《You Don’t Know JS new绑定。...name}const f = new F("wuuconix")console.log(f.name) // => "wuuconix" 在这里,定义了一个构造函数F,然后利用new关键字调用了这个构造函数

    73610

    Javasuper关键字详解

    参考链接: Java super关键字 在Java基础学习,慢慢接触到许多陌生关键字,今天来讲一下我所认识super关键字  它使用场景为:有继承在⭐(必须在继承下才能使用super)  一....类构造方法  这个代码父类含有无参构造方法,所以在子类可以使用this关键字来调用子类构造方法,此时得省去super语句,免得跟this冲突,但省去后系统依旧会帮你加上,但不会报错,若不省去则会报错...    public static void main(String[] args){         Student stu = new Student("beida");     } }  可见父类没有无参构造方法...,但子类却使用了this调用构造方法,这是不允许,所以会报错;  二.super调用普通方法   super调用方法或属性都是指调用父类方法或属性; 看下面简单应用:  class Person...this关键字有很大相似之处,但最大区别就在于super是访问父类操作,而this是访问本类操作!!

    33420

    JavaVolatile关键字详解

    一、基本概念 ---- 先补充一下概念:Java 内存模型可见性、原子性和有序性。 可见性:   可见性是一种复杂属性,因为可见性错误总是会违背我们直觉。...有序性: Java 语言提供了 volatile 和 synchronized 两个关键字来保证线程之间操作有序性,volatile 是因为其本身包含“禁止指令重排序”语义,synchronized...只要在某个线程无法检测到重排序情况(即使在其他线程可以明显地看到该线程重排序),那么就无法确保线程操作将按照程序中指定顺序来执行。...此外,它还允许CPU对操作顺序进行重排序,并将数值缓存在处理器特定缓存。...在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比sychronized关键字更轻量级同步机制。 ?

    49510

    jsthis关键字,setTimeout(),setInterval()执行过程

    = { name:'windseek2', showname: function () { console.log(this.name); } } test2.showname() 运算结果是一样...} var test2 = { name:'windseek2', showname: function () { test1.showname(); } } test2.showname() 这时运算结果应该是...windseek,因为test2.showname()执行时会找到test()执行,test=function () {console.log(this.name);},test前面没有任何对象,作用域就是全局,...1000); } } test2.showname(); 结果就是windseek其实,setTimeout等价于这种函数function(__callback){ __callback();} 最后执行是...callback(); })(test1.showname); } } test2.showname(); 结果一样也是windseek,但是这个不会延迟,settimeout会延迟,setInterval也是一样原理

    1.3K50

    JSClass类详解

    大家好,又见面了,我是你们朋友全栈君。 概述     在ES6,class (类)作为对象模板被引入,可以通过 class 关键字定义类。...它可以被看作一个语法糖,让对象原型写法更加清晰、更像面向对象编程语法。     类实际上是个“特殊函数”,就像你能够定义函数表达式和函数声明一样,类语法有两个组成部分:类表达式和类声明。...严格模式     类和模块内部,默认就是严格模式,所以不需要使用 use strict 指定运行模式 类声明 定义一个类一种方法是使用一个类声明,即用带有class关键字类名(这里是“Rectangle...默认返回实例对象 this this.y = y } toString() { console.log(this.x + ', ' + this.y) } } 注意: 在类声明方法时候...,方法前不加 function 关键字 方法之间不要用逗号分隔,否则会报错 类内部所有定义方法,都是不可枚举(non-enumerable) 一个类只能拥有一个 constructor 方法 静态方法

    4.4K10

    jsJSON详解

    以下是 JavaScript 对象字面量: const person = { name: "lc", age: 20 }; 虽然这对 JavaScript 开发者来说是标准对象字面量...,但 JSON 对象必须使用双引号把属性名包围起来,下面的代码与前面的代码是一样: const obj = { "name": "lc", "age": 20 }; 而用 JSON...表示相同对象语法是: { "name": "lc", "age": 20 } 与 JavaScript 对象字面量相比,JSON 主要有两处不同: 没有变量声明(JSON 没有变量...2.1 JSON对象 JSON对象有两个方法: stringify():将js序列化为JSON字符串; parse():将JSON解析为js值。...如果此函数返回 undefined,则结果中就会删除相应键。如果返回了其他任何值,则该值就 会成为相应键值插入到结果。该函数经常被用于把日期字符串转换为 Date 对象。

    7.6K20

    C++auto关键字用法详解

    1.简介 auto作为一个C语言就存在关键字,在C语言和C++之间却有很大区别。...return 0; } 所以auto无疑是十分不错选择 5、auto在C++14和C++17更新 C++auto关键字最初在C++11引入,主要用于自动类型推导,使编程更简洁。...下面详细介绍这些更新: C++14对auto更新 返回类型推导: 在C++14,auto可以用于推导普通函数返回类型。...这意味着你可以在函数定义时使用auto关键字指定返回类型,编译器会根据返回语句推导出具体类型。这样做可以增加代码可读性和灵活性,特别是在模板编程和使用lambda表达式时。...但在C++14增强了Lambda能力,允许使用auto关键字作为参数类型,从而创建泛型Lambda。

    30410

    详解CC++volatile关键字

    如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器值,如果这个变量由别的程序更新了的话,将出现不一致现象。下面举例说明。...但有时这些优化不是程序所需要,这时可以用volatile关键字禁止做这些优化,volatile字面含义是易变,它有下面的作用: 1 不会在两个操作之间把volatile变量缓存在寄存器。...三、编译器优化 → C关键字volatile → memory破坏描述符 memory比较特殊,可能是内嵌汇编中最难懂部分。为解释清楚它,先介绍一下编译器优化知识,再看C关键字volatile。...2、C语言关键字volatile C语言关键字volatile(注意它是用来修饰变量而不是上面介绍volatile)表明某个变量值可能在外部被改变,因此对这些变量存取不能缓存到寄存器,每次使用时需要重新存取...也就是说,我们要在threadFuncintSignal前面加上volatile关键字,这时候,编译器知道该变量值会在外部改变,因此每次访问该变量时会重新读取,所作循环变为如下面伪码所示:

    84350

    Java关键字volatile和synchronized详解

    Java关键字volatile和synchronized是多线程编程中非常重要和常用关键字。它们都有着不同特性和作用,在多线程编程起着至关重要作用。...下面将详细介绍这两个关键字使用方法、区别以及在实际应用注意事项。 1、volatile关键字 volatile关键字用来修饰变量,它主要作用是保证多个线程之间对该变量访问可见性和有序性。...2、synchronized关键字 synchronized关键字是Java中非常重要和常用关键字,它主要是用来实现对象同步和线程互斥。...综上所述,volatile和synchronized关键字都是Java多线程编程中非常重要和常用关键字。它们分别具有不同特点和作用,在实际应用需要根据具体情况选择使用。...只有在理解了它们特点和使用方法,并且在实际应用掌握了正确使用方式,才能真正发挥它们在多线程编程作用。

    14510

    Javafinal和static关键字详解

    这篇文章我们学习一下Javafinal和static关键字作用! final 「修饰引用」: final关键字可以用来修饰引用、方法和类。...JDK把不同静态资源放在了不同而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什么要这么做呢?...比如和数学相关静态资源放在java.lang.Math,和日历相关静态资源放在java.util.Calendar,这样就很清晰了 避免重名。...与非static区别: 在内存存放位置不同:所有static修饰属性和方法都存放在内存方法区里,而非静态都存在堆内存 出现时机不同:静态属性和方法在没创建对象之前就存在,而非静态需要在创建对象才存在...非静态方法不能定义静态变量 静态方法不能使用this关键字 静态方法不能调用非静态方法,反之可以 「父子类静态和非静态关系:」 对于非静态属性,子类可以继承父类非静态属性;但是当父子类出现相同非静态属性时

    1.8K20

    详解CC++volatile关键字

    如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器值,如果这个变量由别的程序更新了的话,将出现不一致现象。下面举例说明。...但有时这些优化不是程序所需要,这时可以用volatile关键字禁止做这些优化,volatile字面含义是易变,它有下面的作用: 1 不会在两个操作之间把volatile变量缓存在寄存器。...为解释清楚它,先介绍一下编译器优化知识,再看C关键字volatile。最后去看该描述符。...2、C语言关键字volatile C语言关键字volatile(注意它是用来修饰变量而不是上面介绍volatile)表明某个变量值可能在外部被改变,因此对这些变量存取不能缓存到寄存器,每次使用时需要重新存取...也就是说,我们要在threadFuncintSignal前面加上volatile关键字,这时候,编译器知道该变量值会在外部改变,因此每次访问该变量时会重新读取,所作循环变为如下面伪码所示: 1label

    61930
    领券