zoukankan      html  css  js  c++  java
  • Jquery第四课 Javascript中this的使用方法

    thiskeyword的使用

    在JavaScript中使用thiskeyword表示调用方法的对象,这与大部分面向对象语言是一样的。可是因为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,可是后面是函数的參数列表。

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

  • 相关阅读:
    日期格式图片在转换整个输入字符串之前结束
    查看Oracle的表中有哪些索引
    Oracle 中删除表后,表的索引,授权,同义词 会自动删除吗?
    Android自定义进度条颜色
    Android 属性动画(Property Animation) 完全解析 (上)
    开源项目地址
    Android Studio如何设置代码自动提示
    Android Studio 三种添加插件的方式,androidstudio
    强烈推荐android studio用的几个插件
    android studio 中的编码问题
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6848718.html
Copyright © 2011-2022 走看看