是否可以为对象实例本身分配一个函数?

时间:2014-04-29 09:12:44

标签: javascript javascript-objects

请考虑以下事项:

function Person() {
    this.talk = function() {
        alert('talking');
    }
}

var person = new Person();

person(); // Make this alert 'standing'

person.talk();

是否可以在保留对象属性/方法和原型链的同时为实例本身分配一个函数?

2 个答案:

答案 0 :(得分:4)

您可以创建一个函数对象并返回它,就像这样

function Person() {

    // Create a function object
    var F = function() {
        console.log('standing');
    }

    // Add attributes to the function object
    F.talk = function() {
        console.log('talking');
    }

    // Return the function object itself
    return F;
}

var person = new Person();

person();
# standing

person.talk();
# talking

由于Person构造函数返回一个函数对象,因此可以执行该函数对象。这就是person()正在发挥作用的原因。

注意:

由于我们正在返回一个函数 Object ,因此我们可以在不使用new关键字的情况下调用它。因此,以下内容将与之前的方式完全相同

var person = Person();
person();
person.talk();

答案 1 :(得分:0)

function Person ()
 {
 alert ("standing");
 }

Person.talk=function () {alert ("talk");}

var person=Person;