首页 > 解决方案 > 调用匿名函数 javascript

问题描述

我需要调用一个函数传递参数。这是我的代码。

var myfb;
var MyFaceBook = function(response) {
  this.response = response;
};

MyFaceBook.prototype.dd = function(_array) {
  console.log(_array);
}

MyFaceBook.prototype.doLike = function(_url) {		
  this.dd(_url);
  return false;
}

MyFaceBook.prototype.getTabList = function() {		
    return '<a href="#" onclick="'+this.doLike.call('http://facebook.com')+'"> Like </a> | <a href="#">Share</a> | <a href="#"> Comment </a>';
};

myfb = new MyFaceBook(response = array());
myfb.getTabList();	

我真正需要的是当我点击“喜欢”按钮时,我需要控制我通过的网址,即“facebook.com”。

标签: javascriptjquery

解决方案


你不需要使用call( this.doLike.call(...)) 来调用一个函数,你可以这样做this.doLike(...)

var myfb;
var MyFaceBook = function(response) {
  this.response = response;
};

MyFaceBook.prototype.dd = function(_array) {
  console.log(_array);
}

MyFaceBook.prototype.doLike = function(_url) {		
  this.dd(_url);
  return false;
}

MyFaceBook.prototype.getTabList = function() {		
    return '<a href="#" onclick="myfb.doLike(\'http://facebook.com\')"> Like </a> | <a href="#">Share</a> | <a href="#"> Comment </a>';
};

myfb = new MyFaceBook([]);
document.body.innerHTML += myfb.getTabList();

这不是最好的方法。您应该使用创建链接document.createElement,将事件侦听器附加到它们EventTarget#addEventListener,然后将这些链接附加到DOM使用Node#appendChild

const MyFaceBook = function(response) {
  this.response = response;
};

MyFaceBook.prototype.dd = function(_array) {
  console.log(_array);
}

MyFaceBook.prototype.doLike = function(_url) {		
  this.dd(_url);
  return false;
}

MyFaceBook.prototype.getTabList = function() {		
    const link = document.createElement('a');
    link.innerHTML = 'Like';
    link.addEventListener("click", () => {
      this.doLike('http://facebook.com');
    });
    document.body.appendChild(link);
};

const myfb = new MyFaceBook([]);
myfb.getTabList();


推荐阅读