无法从回调中调用原型函数

时间:2017-08-18 20:32:23

标签: javascript prototype

根据这个答案(https://stackoverflow.com/a/28281845/1477388)我知道我可以使用它自己的属性和方法创建一个javascript对象。

但是,当尝试通过回调分配特定方法时,它不起作用!

为什么我不能简单地传递方法而不是传递整个对象?

JS小提琴:https://jsfiddle.net/Lson3qwx/1/

// base `Person` prototype
var Person = {
   name : '',
   age  : 22,
   type : 'human',
   msg: function(message) {
    alert(message);
   },
   greet: function() {
       //console.log('Hi, my name is ' + this.name + ' and I am a ' + this.type + '.' );
       this.msg('Hi, my name is ' + this.name + ' and I am a ' + this.type + '.');
   }
};

// create an instance of `Person`:
var skywalker = Object.create(Person);
skywalker.name = 'Anakin Skywalker';
//skywalker.greet(); // 'Hi, my name is Anakin Skywalker and I am a human.'

var callbackTest1 = function(callback) {
    callback.greet();
}

var callbackTest2 = function(callback) {
    callback();
}

callbackTest1(skywalker); // this works
callbackTest2(skywalker.greet); // this doesn't

0 个答案:

没有答案