Solo  当前访客:2 开始使用

js中call用法


一、使用call继承对象方法

function a(){
  this.m1=function(){
      console.log("a-m1-n");
  }
}
a.prototype.m2=function(){
  console.log("a-m1-p");
}
a.m3=function(){
  console.log("a-m3-l");
}

function b(){
a.call(this);
}
var nb = new b();

nb.m1();//a-m1-n
nb.m2();//error
nb.m3();//error

二、使用call、apply调用其他对象的方法

eg1:判断对象类型

var o = []
Object.prototype.toString.call(o) == "[object Array]"//true

eg2:让对象具备Array的能力

var dnode = document.getElementsByTagName("input")

dnode = Array.prototype.slice.call(dnode)

dnode.length//3

dnode.join("===")//"[object HTMLInputElement]===[object HTMLInputElement]===[object HTMLInputElement]"

eg3:

function Animal(){
}
Animal.prototype={
  food:"",
  say: function(){
    alert("I love "+this.food);
  }
}

function dog(){
}
dog.prototype={
food:"meat"
}
function cat(){
}
cat.prototype={
food:"fish"
}

var animal = new Animal();
animal.say.call(new cat());//i love fish
animal.say.call(new dog());//i love meat


标题:js中call用法
作者:hugh0524
地址:https://blog.uproject.cn/articles/2016/05/04/1462334242036.html

, , , 0 0