美文网首页
this应用-对象方法的连续调用[JavaScript_011]

this应用-对象方法的连续调用[JavaScript_011]

作者: 六亲不认的步伐 | 来源:发表于2019-03-17 22:42 被阅读0次

this

  • 方法连续调用示例
     function Person(){
            this.eat = function(){
              console.log("I am eating");
              },
            this.drink = function(){
              console.log("I am drinking");
              },
            this.play = function(){
              console.log("I am playing");                
            }
      }
    var person  = new Person();
    person.eat().play().drink();//会报错
  • 报错原因:因为,eat等这三个方法,执行后并未指定返回值,默认返回undefined

  • 修正示例代码
   function Person() {
    this.eat = function() {
            console.log("I am eating");
            return this;
        },
    this.drink = function() {
            console.log("I am drinking");
            return this;
        },
    this.play = function() {
            console.log("I am playing");
            return this;
        }
}
var person = new Person();
console.log(person.eat().play());//成功连续调用方法

this指向


  • 代码练习
var name = "222";
var a = {
    name: "111",
    say: function() {
        console.log(this.name);//this为a,所以输出1111
    }
};
var b = {
    name: "333",
    say: function(fun) {
        fun();
    }
};
b.say(a.say); //此时的this是指向window,所以输出222
  • 详解:因为b.say(a.say),其中b执行say方法时,传入的只是function() {console.log(this.name);},与a无关,并且执行时,未指定是this.fun();所以此时的this为window

hasOwnPrototype()方法与关键词 in的区别


  • hasOwnPrototype()作用:hasOwnPrototype()返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。
  • in作用:判断对象是否包含特定的自身属性包括继承属性。

instanceof


  • 用法: A instanceof B,其中一般A为对象的实例化(变量),B一般是指对象
  • 作用:判断A对象的原型链上是否有B的原型
  • 返回值:为布尔值

区别对象与数组的三种方法


  1. 使用instanceof 进行区分 数组使用 instanceof Array, 对象使用 instanceof object
  2. 使用constructor进行区分 数组返回 function Array(){}; 对象返回 function Object(){};
  3. 使用Object.prototype.toString.call() 进行区分 数组返回[object Array];对象返回[object Object]

arguments.collee


  • 作用:在执行匿名函数递归时,可以提供自身函数的调用
  • 示例:使用立即执行函数计算50的阶乘
var result = (function(n) {
    if (n == 1) {
        return 1;
    } else
        return n * arguments.callee(n - 1);
}(50))

func.caller

  • 作用:可以提供函数的调用源头
function test() {
    demo();
}
function demo() {
    console.log(demo.caller);//输出test(){demo();};
}

相关文章

  • this应用-对象方法的连续调用[JavaScript_011]

    this 方法连续调用示例 报错原因:因为,eat等这三个方法,执行后并未指定返回值,默认返回undefined ...

  • 匿名对象

    A:什么是匿名对象 没有名字的对象 B:匿名对象的应用场景 调用方法 仅仅只调用一次的时候 这种方法的好处是可以节...

  • js this相关问题总结

    应用场景 作为普通函数 使用call,apply,bind 作为对象方法被调用 在class方法中被调用 箭头函数...

  • self和super - OC

    self的应用场景: 用在类方法中使用:指代的是当前类 用在对象方法中使用:指代的是调用当前对象方法的那个对象 访...

  • Java匿名对象

    匿名对象:没有名字的对象。 匿名对象的应用场景: A.调用方法,仅仅只调一次的时候。(注意:调用多次的时候不适合)...

  • 1. Spring核心机制:依赖注入

    1.1 依赖注入 应用中大量存在A对象需要调用B对象方法的情形,这种情形被称为依赖,即A对象依赖B对象。 ...

  • 对象方法和类方法

    -对象方法 +类方法 调用对象方法必须先创建对象,在通过对象来调用。 类方法不依赖对象,使用对象名直接调用。 类方...

  • 使用NSBundle处理项目相关资源

    为了获取NSBundle对象,一般会调用该类的mainBundle方法,该方法就会返回该应用对应的应用程序包。 -...

  • 学习途中之类方法和对象方法

    对象方法1、 对象方法/实例方法我们之前学习的方法就叫做对象方法.对象方法的调用必须要先创建对象,通过对象来调用....

  • js call方法

    **call 方法 **请参阅应用于:Function 对象要求版本 5.5调用一个对象的一个方法,以另一个对象替...

网友评论

      本文标题:this应用-对象方法的连续调用[JavaScript_011]

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