zoukankan      html  css  js  c++  java
  • JavaScript设计模式与开发实践(一)

    一、this

    this的指向大致可以分为以下几种:

    • 作为对象的方法调用
    • 作为普通函数调用
    • 构造器调用
    • Function.prototype.call或Function.prototype.apply

    1.作为对象调用

    当函数作为对象的方法被调用,this指向该对象:

    var obj = {
        a:1,
        getA:function(){
            alert(this === obj);  //输出true
            alert(this.a);    //输出1
        }
    };
    
    obj.getA();

    当函数作为普通函数被调用,this指向全局对象(浏览器中指window对象)

    window.name = 'globalName';
    
    var getName = function(){
        return this.name;
    }
    
    console.log(getName());    //输出:globalName
    
    或者
    
    window.name = 'globalName';
    
    var muObject = {
        name: 'sven',
        getName: function(){
            return this.name;
        }
    };
    
    var getName = myObject.getName;
    console.log(getName());    //输出: globalName

    构造器里的this指向返回的对象

    var MyClass = function(){
        this.name = 'sven';
    };
    
    var obj = new MyClass();
    alert(obj.name);    //输出:sven

    call和apply动态的改变传入函数的this

    var obj1 = {
        name: 'sven',
        getName:function(){
            return this.name;
        }
    };
    
    var obj2 = {
        name:'anne'
    };
    
    console.log(obj1.getName.call(obj2));    //输出: ‘anne’
  • 相关阅读:
    浏览器兼容性优化
    js操作table(增加行,删除行,上移,下移,复制行)
    褚时健传读后感
    新鞋
    八达岭奥莱
    springMVC 多方法controller
    springMVC入门配置及helloworld实例
    springMVC源码下载地址
    spring3mvc与struts2比较
    hql语句拼接的替换方式
  • 原文地址:https://www.cnblogs.com/zyxiaohuihui/p/8414450.html
Copyright © 2011-2022 走看看