美文网首页JavaScript渣渣到大神手册
JS面向对象--3对象的方法

JS面向对象--3对象的方法

作者: FF_C | 来源:发表于2017-11-28 22:04 被阅读0次

    如果一个对象的属性值是一个函数,我们称这个属性叫做这个对象的方法(methods).
    下面这个对象有一个属性叫做sayHello,它的值是一个匿名函数,所以我们把这个sayHello叫做obj的方法

    var obj = {
      name : "小明",
      age : 12,
      sex :"男",
      sayHello : function(){
        alert("你好")
      }
    };
    obj.sayHello();  //你好
    

    我们用对象打点调用sayHello属性,这个函数的值 是个函数,所以就能圆括号执行:
    obj.sayHello();

    现在我们要研究的是函数的上下文(context).。所谓上下文就是指函数里的this是谁

    var obj = {
      name : "小明",
      age : 12,
      sex :"男",
      sayHello : function(){
        alert("你好 我是"+this.name+"我的年龄是"+this.age)
      }
    };
    obj.sayHello(); //你好 我是小明 我的年龄是12
    

    当一个函数当做对象的方法调用的时候 ,这个函数里的this表示这个对象
    现在我们调用 函数的时候 是通过 obj打点调用 的,所以现在这个sayHello函数的上下文就是obj对象 。即sayHello函数的内部this指向obj,
    但是,千万不要认为写在对象里面的函数,上下文一定是这个对象!
    比如:

    var obj = {
      xingming : "小明",
      age : 12,
      sex :"男",
      sayHello : function(){
        alert(this);   //object window
        alert("你好 我是"+this.name+"我的年龄是"+this.age)
      }
    };
    
    var fn = obj.sayHello;
    fn(); //你好 我是 我的年龄是undefined (上面用了name,用其它名字会出undefined)
    

    函数的上下文是什么 ,取决于函数怎么调用 ,而不是函数如何定义!!
    函数的上下文是函数的调用时表现的性质,不是函数定义的时候写死的性质.

    var obj = {
      xingming : "小明",
      age : 12,
      sex :"男",
      sayHello : function(){
        alert(this);   //object window
        alert("你好 我是"+this.name+"我的年龄是"+this.age)
      }
    }
    var xingming = "小强";
    var age ="123"
    var fn = obj.sayHello;
    fn();  //你好 我是小强 我的年龄是123
    

    全局变量就是window对象的属性

    var a =100;
    var b =222;
    var c = 233;
    var d = true;
    var e =function(){alert(2+3)};
    
    alert(window.a);
    alert(window.b);
    alert(window.e);
    

    相关文章

      网友评论

        本文标题:JS面向对象--3对象的方法

        本文链接:https://www.haomeiwen.com/subject/uenebxtx.html