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

2019-03-17  本文已影响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();//会报错

   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

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


instanceof


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


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

arguments.collee


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();};
}
上一篇 下一篇

猜你喜欢

热点阅读