Jquery第四课 Javascript中this的用法

this关键字的使用

在JavaScript中使用this关键字表示调用方法的对象,这与大部分面向对象语言是一样的。但是由于callapplybind等函数的影响,我们可以改变this所代指的对象。

  • 使用call或者apply调用的函数中,this代指传入的第一个参数对象,如果传入null或者undefined,则表示全局对象(window)。
  • 通过对象调用函数(方法),函数中的this表示调用该函数的对象。
  • 单独调用的函数中this表示全局对象。
var myObject = {
    sayHello: function() {
        console.log("Hi, my name is " + this.myName);
    },
    myName: "Rebecca"
};

var secondObject = {
    myName: "Colin"
};

myObject.sayHello();    //"Hi, my name is Rebecca"
myObject.sayHello.call(secondObject);   //"Hi, my name is Colin"
var myName = "the global object";
var sayHello = function() {
    console.log("Hi, my name is " + this.myName);
};
var myObject = {
    myName = "Rebecca"
};
var myObjectHello = sayHello.bind(myObject);

sayHello(); //"Hi, my name is the global object"
myObjectHello(); //"Hi, my name is Rebecca"

JavaScript可以在运行中为对象动态添加函数,这样也会导致this代指的对象发生变化。

var myName = "the global object";
var sayHello = function() {
    console.log("Hi, my name is " + this.myName);
};
var myObject = {
    myName: "Rebecca"
};
var secondObject = {
    myName: "Colin"
};

myObject.sayHello = sayHello;
secondObject.sayHello = sayHello;

sayHello(); //"Hi, my name is the global object"
myObject.sayHello(); //"Hi, my name is Rebecca"
secondObject.sayHello(); //"Hi, my name is Colin"

还有,不能直接给处于较深的名字空间的函数增加短引用,会导致this变为全局对象,但是可以对它所处的对象设置短引用。

var myNamespace = {
    myObject: {
        sayHello: function() {
            console.log("Hi, my name is " + this.name);
        },
        myName: "Rebecca"
    }
};

var hello = myNamespace.myObject.sayHello;
hello();    //"Hi, my name is undefined"

var obj = myNamespace.myObject;
obj.sayHello(); //"Hi, my name is Rebecca"

Tips

callapply的区别是,apply接收两个参数:this和函数的参数数组;而call的第一个参数为this,但是后面是函数的参数列表。

本文档由长沙戴维营教育整理。

时间: 2024-08-29 06:56:16

Jquery第四课 Javascript中this的用法的相关文章

Jquery第四课 Javascript中this的使用方法

thiskeyword的使用 在JavaScript中使用thiskeyword表示调用方法的对象,这与大部分面向对象语言是一样的.可是因为call.apply.bind等函数的影响.我们能够改变this所代指的对象. 使用call或者apply调用的函数中,this代指传入的第一个參数对象,假设传入null或者undefined.则表示全局对象(window). 通过对象调用函数(方法),函数中的this表示调用该函数的对象. 单独调用的函数中this表示全局对象. var myObject

一、jQuery的ready与javascript中的onload加载时间对比

<script type="text/javascript"> var strtime = new Date().getTime(); $(function(){ var end1 = new Date().getTime(); var t1 = end1 - strtime; $("body").append("<p>jquery加载时间为: "+t1+"秒</p>"); }) funct

javascript中NaN的用法

NaN是一个特殊的数值,任何数值除以0会返回NaN,不会影响其他代码的执行(其实为0/0为NaN,正数除以0得到infinity,负数除以0得到负的infinity) 它的特点为: 1.任何涉及NaN的操作都返回NaN 2.NaN与任何值都不相等,包括NaN 它涉及到的函数为isNaN();该函数接受一个参数,该参数可以是任何类型 javascript中NaN的用法,布布扣,bubuko.com

【Javascript设计模式】第一课 Javascript中的继承

在Javascript中每个类有三个部分:     1.第一部分是构造函数内,这是供实例化对象复制用的. 2.第二部分是构造函数外,通过点语法添加的,这是供类使用的,实例化对象是访问不到的. 3.第三部分是类的原型中,实例化对象可以通过其原型链间接访问到,也是为供所有实例化对象所共用的. 一. 子类的原型对象 --类式继承 类式继承是最常见最简单的继承模式,类式继承用一句话概括就是"父类实例指向子类原型" /** * 声明一个父类 * @constructor */ var Super

Jquery第三课 Javascript基本语法

注释 JavaScript支持与C语言相同的注释方法,单行注释(//)和多行注释(/* */).代码中的注释在执行的时候将被忽略,只是起到说明代码的功能,便于代码维护和理解. //单行注释 /* 多行注释 1. 这是一行注释 2. 这还是一行注释 3. 注释只是起到说明性作用 */ 空白字符 空白字符包括空格.回车.换行等符号,在JavaScript中也会被忽略掉,只是起到维持代码格式的作用,方便查看.在实际应用中,JavaScript代码部署到服务器上时常常使用工具将代码中的空白字符去掉,以便

译:理解并掌握 JavaScript 中 this 的用法

原文链接:http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ 文章描述:本文原文来自 Javascript.isSexy 这个网站.这篇文章和文中提到的另一篇文章解决了我一直以来对 this 和 apply, call, bind 这三个方法的困惑.我看过很多国内相关的技术文章,没有一篇能让我彻底理解这些概念的.因此我决定把它译过来,不要让更多的初学者像我一样在这个问题上纠结太长时

理解并掌握 JavaScript 中 this 的用法[转]

本文原文来自 Javascript.isSexy 这个网站 来源:code.mforever78.com JavaScript this 用法基础 理解 JavaScript this 的关键 在全局作用域中使用 this this 最容易被误解和难以掌握的情景 1. 解决当包含 this 的方法被当做回调函数时遇到的问题 2. 解决当 this 出现在闭包内遇到的问题 3. 解决把一个 this 方法 赋给一个变量时出现的问题 4. 解决当借用方法的时候 this 的值不正确的问题 结语 我们

javascript中的this用法

this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascript中,由于 javascript的动态性(解释执行,当然也有简单的预编译过程),this的指向在运行时才确定.这个特性在给我们带来迷惑的同时也带来了编程上的 自由和灵活,结合apply(call)方法,可以使JS变得异常强大.

JavaScript 中 this 的用法

在 JavaScript 中,this 是动态绑定,或称为运行期绑定的.一般而言,在Javascript中,this 指向函数执行时的当前对象. 由于其运行期绑定的特性,JavaScript 中的 this 可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式.JavaScript 中函数的调用有以下几种方式:没有明确的调用对象,作为对象方法调用,使用 new 关键字作为构造函数调用,和使用 apply. call 和 eval 调用. 没有明确的当前对象时 当没有明确的执行时的当前