js随笔-函数方法中的this

1.对象的方法形式调用,fun.getAge()的this指向的是对象fun

var fun={
  name:"lihui",
  age:23,
  getAge:function(){
    console.log(fun.age);
}
}
fun.getAge();//23

  

2.当在对象方法中内嵌函数,内嵌函数中的this便指向的是全局对象window,不是对象了

var fun={
  name:"lihui",
  age:23,
  getAge:function(){
    function getAgeFun(){
  console.log(this.age);
}
  return getAgeFun();
}
}
fun.getAge();//underfined

要想在函数中把this指向对象需要在方法中将this赋值给一个变量,在函数中使用这个变量

var fun={
  name:"xiaoming",
  age:23,
  getAge:function(){
    var that=this;
    function getAgeFun(){
  console.log(that.age);
}
  return getAgeFun();
}
}
fun.getAge();//23  

之前经常在回调函数中犯这种错误,就经常在success中创建函数,并在函数中直接this.xxx使用对象的参数,就会出错

3.在对象方法中调用在外部创建的函数,函数中的this指向的也是window

function getAgeFun(){
  console.log(this.age);
}
var fun={
  name:"xiaoming",
  age:23,
  getAge:function(){
    getAgeFun();
}
}
fun.getAge();//underfined

4.在将对象方法赋值给其他变量,this值也是指向window

var fun={
  name:"xiaoming",
  age:23,
  getAge:function(){
    console.log(this.age);
}
}
var fun2=fun.getAge;
fun2();//underfined

  

时间: 2024-10-06 16:51:11

js随笔-函数方法中的this的相关文章

js的函数4中属性方法

私有方法:私有方法本身是可以访问类内部的所有属性的,即私有属性和公有属性.但是私有方法是不可以在类的外部被调用. 公有方法: 1.公有方法是可以在类的外部被调用的, 2.但是它不可以访问类的私有属性. 3.公有方法必须在类的内部或者外部通过类的prototype属性添加. 特权方法: 1.特权方法是可以在类的外部被调用的, 2.但是它可以访问类的私有属性,并且也是可以访问类的公有属性,可以勉强的认为它是一种特殊的公有方法. 3.但是它与上面的公有方法的声明与定义方式不同.特权方法必须在类的内部声

java函数方法

1.方法重载 (1)源代码 // MethodOverload.java // Using overloaded methods public class MethodOverload { public static void main(String[] args) { System.out.println("The square of integer 7 is " + square(7)); System.out.println("\nThe square of doubl

js实现类似php中strtotime函数和timetostr的日期转换/互换功能

<script type="text/javascript">   //日期(格式:yyyy-mm-dd H:i:s) ---转换为以秒为单位的unix时间轴(格式:xxxxxx) 方法一:   //摘取天上星:http://blog.csdn.net/zqtsx   function strtotime1(datetime){        var tmp_datetime = datetime.replace(/:/g,'-');        tmp_datetime

js(20140517)在JS方法中返回多个值的三种方法

在JS方法中返回多个值的三种方法 在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据,用下面的几种方法都可以实现: 1 使用数组的方式,如下: <html> <head> <title>JS函数返回多个值--oec2003</title> </head> <body> <input type="button" onclick="getNames()" value="t

knockout.js(js)代码在IE中出现“意外地调用了方法或属性”的错误

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 var CartListViewModel = function () {     var self = this;     self.payment = [                 { name: "", value: 1

js节流函数中的参数传递

以下内容,都是本人自己思考所得,不免存在很多问题,欢迎大家指正或者提供更好的解决方法. 在开发中,遇到这样一个问题:拍摄地点列表,用户如果在短时间内多次点击同一个地点时,将会添加多个同名地点. 很显然,这不是我们想要的结果.然后就上网搜了一下,知道了一个新的概念,函数节流(在这里,这个理解是错误的,应该是函数去抖,这个后面再说).在这里主要参照了博客园谦行的这篇文章:Javascript函数节流 这边文章主要讲述了无参数函数的节流,并提供了两种实现方式.而我在这里想要说的是这实际开发中,我遇到的

C#中webbrowser与javascript(js)交互的方法

今天在做一个项目的时候需要用c#搞一个webbrowser,然后有些地方还需要与js交互.所以就查了一下资料,发现很多博客提到了但是却没有说下具体的操作.所以我就写一下. 开发环境是Visual Studio 2008 .阅读此文需要有C#和javascript开发基础. 1.首先新建一个项目,在默认窗体form1上拖拽一个webbrowser1. 2.给form1的Load时间事件添加如下代码: private void Form1_Load(object sender, EventArgs

JS.【转】JS事件处理函数中return的作用

1.js事件处理函数中return的作用 - AnswerCard - 博客园.html(https://www.cnblogs.com/answercard/p/5255230.html) 2.网页内容保存: 这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置

理解 JS 回调函数中的 this

理解 JS 回调函数中的 this:https://www.cnblogs.com/gavinyyb/p/6286750.html 原文链接:http://www.tuicool.com/articles/z2Yvaq 任何变量或对象都有其赖以生存的上下文.如果简单地将对象理解为一段代码,那么对象处在不同的上下文,这段代码也会执行出不同的结果. 例如,我们定义一个函数 getUrl 和一个对象 pseudoWindow . function getUrl() { console.log(this