this 不同情况指代的对象

1 全局环境中的this指向全局对象

this.a = 10;
alert(a);//10

b = 20;
alert(this.b);//20

var c = 30;
alert(this.c);//30

2 对象内部函数的this指向调用函数的当前对象

var a = 10;
var bar = {
    a: 20,
    test: function(){
        alert(this.a);
    }
}
bar.test();//20

3 全局环境函数的this指向全局对象

var a = 10;
function foo(){
    alert(this.a);
}
foo();//10

4 匿名函数中的this指向全局对象

var a = 10;
var foo = {
    a: 20,
    fn: (function(){
        alert(this.a);
    })()
}
foo.fn//10

5 setInterval和setTimeout定时器中的this指向全局对象

var a = 10;
var oTimer1 = setInterval(function(){
    var a = 20;
    alert(this.a);//10
    clearInterval(oTimer1);
},100);

6 eval中的this指向调用上下文中的this

(function(){
    eval("alert(this)");//[object Window]
})();
function Foo(){
    this.bar = function(){
        eval("alert(this)");//[object Object]
    }
}
var foo = new Foo();
foo.bar();

7 构造函数中的this指向构造出的新对象

function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayName = function(){
        alert(this.name);
    }
}
var p1 = new Person(‘lily‘,‘20‘);
p1.sayName();//‘lily‘
时间: 2024-08-07 00:08:29

this 不同情况指代的对象的相关文章

C++对象模型——"无继承"情况下的对象构造(第五章)

5.2 继承体系下的对象构造 当定义一个object如下: T object; 时,实际上会发生什么事情呢?如果T有一个constructor(不论是由user提供或是由编译器合成),它会被调用.这很明显,比较不明显的是,constructor的调用真正伴随了什么? constructor可能内带大量的隐藏码,因为编译器会扩充每一个constructor,扩充程度视 class T的继承体系而定.一般而言,编译器所做的扩充操作大约如下: 1.记录在member initialization li

"无继承" 情况下的对象构造

考虑以下代码: Point global; //1) Point Foobar() { Point local; //2) Point *heap = new Point; //3) *heap = local; //4) //...stuff... delete heap; //5) return local; //6) } 1), 2), 3) 为三种不同的对象产生方式: global内存配置, local 内存配置和 heap 内存配置. 4) 把一个object 指定给另一个, 6) 设

重写函数对象prototype属性值的不同的情况下实例对象的内部属性Prototype值有所不同

http://www.cnblogs.com/cmptlgg/ 我的博客园 重写函数对象的prototype属性值:会切断实例的[[Prototype]]内部属性和最初函数对象的prototype(原型对象)的联系 这个例子引用js高级第三版: /* 这是高三对此实现的解释. 尽管可以随时为原型添加属性和方法,并且修改能够立即在所有对象实例中反映出来,但如果是重 写整个原型对象,那么情况就不一样了.我们知道,调用构造函数时会为实例添加一个指向最初原型的 [[Prototype]]指针,而把原型修

ORACLE不使用工具的情况下获取对象DDL

set line 200set pagesize 0set long 99999set feedback offset echo off获得表.索引.视图.存储过程.函数的DDL:select dbms_metadata.get_ddl('TABLE','TABLE_NAME','TABLE_OWNER') from dual;select dbms_metadata.get_ddl('INDEX','INDEX_NAME','INDEX_OWNER') from dual;select dbm

this指针在不同情况下的指代

说不同情况了吧,首先要分有几种情况使用this,然后再说分别指代什么 1)如果是一般标签下函数调用,this指代全局对象,也就是window对象或者document对象 2)如果在嵌套函数中被嵌套的函数调用,this是指代未定义,是没有意义的 3)如果在对象的方法中调用,this指代对象本身: 4)如果是在构造函数中调用,this指代构造函数的实例: 5)this不能赋值或者修改. 大多数我们使用都是对象的方法,因此是指代对象(元素)本身 另外要注意,方法嵌套中this会在不同层面指代不一样明晰

Unit03 - 对象内存管理 、 继承的意义(上)

Unit03 - 对象内存管理 . 继承的意义(上) 1.内存管理:由JVM来管理的  1)堆:    1.1)存储所有new出来的对象(包含成员变量)    1.2)没有任何引用所指向的对象就是垃圾,        垃圾回收器(GC)不定时清理垃圾,        回收过程是透明的(看不到的),        调用System.gc()建议GC尽快来回收    1.3)成员变量的生命周期:          创建对象时存在堆中,对象被回收时一并被回收    1.4)内存泄露:不再使用的对象没有

谈谈我对Javascript中This对象的理解

this 指针的隐式赋值 this总是指向调用该方法的对象: 在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window: 显示操纵 this 指针 Javascript引擎通过以下两种方式允许我们显式指定this指针指代的对象: 1. 通过new操作符,Javascript引擎会将this指针返回给被赋值的变量. 2. 通过Function.apply或者Function.call或者Function.bind的原型方法,我们可以

读书笔记-JavaScript中的全局对象

对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用.这个JavaScript自身提供的全局对象的功能包括: 1.全局对象拥有一些常用的属性值.比如undefined.Infinity以及NaN.2.全局对象拥有一些常用的属性对象.比如Math.JSON和Number对象均为该全局对象的属性.3.全局对象提供一些全局函数供调用.比如isNaN().isFinite().parseInt()和eval()等.4.全局对象提供一些全局构造器

Qt Quick 组件和动态创建的对象具体的解释

在<Qt Quick 事件处理之信号与槽>一文中介绍自己定义信号时,举了一个简单的样例.定义了一个颜色选择组件,当用户在组建内点击鼠标时,该组件会发出一个携带颜色值的信号,当时我使用 Connections 对象连接到组件的 colorPicked 信号,改变文本的颜色. 当时用到的 Component . Loader 两个特性,一直没来得及介绍,可能非常多人都还在雾里看花呢. 这次呢.我们就来仔细致细地把他们讲清楚. 版权全部 foruok ,转载请注明出处:http://blog.csd