zoukankan      html  css  js  c++  java
  • javascript语言之 this概念

    转载 猫猫小屋 http://www.maomao365.com/?p=837

    由于javascript是一种解释性语言,运行时才会解释所有的变量值,所以对于javascript中this所指的对象是动态变化的,由于函数调用方式不同它可以指向全局对象,局部对象或者任意对象。

    this对象生成:当javascript开始加载时 ,this对象指window,当申明一个对象时 例 var t={} 此时t对象里面的方式 调用this时指向 t。

    一:
    当在全局范围内使用 this,那么这个this对象就是指向window。
    二:
    在一个函数里面使用this,那么this就是一个局部对象,则this为此函数对象
    < script>
    var t = {
    x:0,
    y:0,
    fun1: function(x,y) {
    this.x = this.x + x;
    this.y = this.y + y;
    alert(“x 数值:”+x);
    alert(“y 数值:”+y);
    }
    };
    t.fun1(2,3)//this 绑定到当前对象,即 t 对象
    < /script>
    三:
    函数里面调用this对象,则被绑定为全部对象,x变量被加载为 全部变量(慎用)。
    < script>
    function xToQuanJu(x) {
    this.x = x;
    }
    xToQuanJu(5);
    alert(x);
    < /script>
    四:
    作为构造函数调用
    JavaScript 支持面向对象式编程,与主流的面向对象式编程语言不同,JavaScript 并没有类(class)的概念,而是使用基于原型(prototype)的继承方式。相应的,JavaScript 中的构造函数也很特殊,如果不使用 new 调用,则和普通函数一样。作为又一项约定俗成的准则,构造函数以大写字母开头,提醒调用者使用正确的方式调用。如果调用正确,this 绑定到新创建的对象上。
    在 JavaScript 中函数也是对象,对象则有方法,apply 和 call 就是函数对象的方法。这两个方法异常强大,他们允许切换函数执行的上下文环境(context),即 this 绑定的对象。
    function fun1(x, y){
    this.x = x;
    this.y = y;
    this.fun2= function(x, y){
    this.x = x;
    this.y = y;
    }

    var f1= new fun1(0, 0);
    var f2= {x: 0, y: 0};
    f1.fun2(1, 1);
    f1.fun2.apply(f2, [10, 10]);
    在上面的例子中,我们使用构造函数生成了一个对象 f1,该对象同时具有 fun2 方法;创建了另一个对象 p2 数据集合变量,我们看到使用 apply 可以将 f1 的方法应用到f2 上,这时候 this 也被绑定到对象f2 上。另一个方法 call 也具备同样功能,不同的是最后的参数不是作为一个数组统一传入,而是分开传入的。

  • 相关阅读:
    idea用法
    pagehelper用法
    mybatis
    多线程2
    radio 标签状态改变时 触发事件
    多线程
    a标签点击后,给a标签添加样式
    servlet
    mybatis 查询
    springmvc 发送PUT 和 DELETE 请求
  • 原文地址:https://www.cnblogs.com/lairui1232000/p/4306262.html
Copyright © 2011-2022 走看看